gpt4 book ai didi

git - 为什么 Git merge 会在 master 分支上创建多个提交?

转载 作者:行者123 更新时间:2023-12-02 08:12:31 26 4
gpt4 key购买 nike

我正在使用两个分支,masternewFeature .在构建“新功能”时,我向 newFeature 添加了多个提交。分支。我对git merge的理解是它将在 master 上创建单个提交一旦分支 merge ,但是 merge 后,master现在有完整的提交历史记录在 newFeature .例如-

master (pre-merge):

1=>2=>3

newVersion:

1=>2=>3=>4=>5=>6

master (actual results of merge):

1=>2=>3=>4=>5=>6

master (expected results of merge):

1=>2=>3=>6

有什么办法可以从 newVersion 中删除中间提交吗?在 merge 期间,为什么 merge 没有按预期工作?

最佳答案

这里要注意的关键是,对master 没有进行任何更改。您在 newVersion 的整个工作过程中.在这些情况下,Git 默认为“快进” merge ,这基本上可以认为是从 newVersion 获取所有新提交。并将它们附加到 master 上的最新提交中(这不会分离在 newVersion 上完成的提交历史记录)。这可以用 --no-ff 覆盖标志,例如:

git merge newVersion --no-ff

结果是:
master (pre-merge):

1=>2=>3

newVersion:

1=>2=>3=>4=>5=>6

master (actual results of merge):

1=>2=>3=========>7
4=>5=>6

请注意,commit 7 表示 merge ,并不替换提交历史记录。

引用: https://sandofsky.com/images/fast_forward.pdf

或者,如果您希望 merge newVersion 的整个提交历史记录在 master 上进行一次提交(如果它们在“新版本”的整个进程中只是次要提交,则可能很有用)您可以使用 --squash 运行 merge 。旗帜。例如:
git merge --squash newVersion

结果是:
master (pre-merge):

1=>2=>3

newVersion:

1=>2=>3=>4=>5=>6

master (actual results of merge):

1=>2=>3=>7

请注意,7 merge 了在提交 4 - 6 中完成的提交历史记录

关于git - 为什么 Git merge 会在 master 分支上创建多个提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45177660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com