抱歉,Git初学者在这里。我有两个分支,feature
和first-feature
。我在first-feature
中进行了10次提交,然后将所有内容合并回feature
中。我想知道,对于Git工作流程,以下两种情况中哪一种最常见?或者其中哪一种甚至是错误的?
A)first-feature
的10次提交也出现在feature
的历史记录中
或
B)feature
仅具有一次代表新功能的提交?
我们非常感谢您的帮助!
答案 0 :(得分:2)
合并两个分支时,git merge
保留对合并分支所做的所有提交,除非您使用squash flag
。例如,如果您有一个feature branch
并且在将其合并到master
时有3个提交,则所有这些提交都将显示在master branch
的历史记录中,并且看起来就像是提交一直都写在master branch
上。
保存历史有其优点:
- 它使您可以保留任何给定功能的提交历史记录,而不必担心重写提交和更改历史记录。它可以帮助您避免不必要的git恢复或重置!
- 不同的功能保持隔离,并且不会干扰现有的提交历史。
- 可以帮助您重新集成完整的功能分支。
反之,如果您更看重线性历史,那么git rebase
或squash flag
可能是最合适的。您将避免不必要的提交,并使更改更加集中和线性!
答案 1 :(得分:1)
除非您明确指定,否则不会压缩提交。
所以
git checkout feature
git merge first-feature
git push
将复制单个提交
而
git checkout feature
git merge --squash first-feature
git push
将创建一个合并提交。
通常,建议压榨以保持提交历史记录整洁。