由于我的理解,图表和结论不正确,因此该答案已被修改。
git pull
导致合并提交,因为git正在合并。可以通过将分支设置为使用rebase而不是merge来更改此设置。使用rebase而不是在pull上合并将为共享存储库提供更线性的历史记录。另一方面,合并提交显示了分支上的并行开发工作。
例如,两个人在同一个分支上工作。分支开始于:
...->C1
第一个人完成工作并推送到分支:
...->C1->C2
第二个人完成了他们的工作并想要推送,但是不能,因为他们需要更新。第二人称的本地存储库如下所示:
...->C1->C3
如果拉取设置为合并,则第二个人存储库将看起来像。
...->C1->C3->M1
\ /
->C2->
其中M1是合并提交。这个新的分支历史将被推送到仓库中。如果相反,则将pull设置为对本地存储库进行重设,如下所示:
...->C1->C2->C3
没有合并提交。历史变得更加线性。
两种选择都反映了分支的历史。git允许您选择喜欢的历史记录。
确实在某些地方,重新设置可能会导致远程分支机构出现问题。这不是其中一种情况。我们更喜欢使用rebase,因为它简化了已经很复杂的分支历史记录,并显示了相对于共享存储库的历史记录版本。
您可以设置branch.autosetuprebase = always来让git自动将远程分支建立为rebase而不是master。
git config --global branch.autosetuprebase always
此设置使git自动为每个远程分支创建配置设置:
branch.<branchname>.rebase=true
您可以为已设置的远程分支机构自行设置。
git config branch.<branchname>.rebase true
我要感谢@LaurensHolst对我之前的发言提出质疑和追求。我当然已经了解了更多有关git如何与pull和merge提交一起工作的知识。
有关合并的提交,你可以阅读更多的信息为一个项目贡献在ProGit图书。在私人小团队部分显示合并的提交。
git log --no-merges