一位同事在一个功能上工作了几个星期,现在 git 提交看起来像:
colleag add class 8b5bec5
colleag add change 3535adc5
colleag Merge branch 'NEW' of github.example.de:example/app into NEW 0cc2d24
colleag add change
colleag add validation 7eff440
colleag rebase done wrong merge f8e35e3
colleag Merge branch 'NEW' of github.example.de:example/app into NEW 2168ac6
colleag wrong merge a6ed636
colleag typo in spec 7b23633
我猜他正在做一个:
git pull origin master
在他的工作分支上。
所以,我的问题:
1(这是什么意思:
Merge branch 'NEW' of github.example.de:example/app into NEW 2168ac6
这是一个合并提交,但为什么 git 在这里与远程合并?
2( 是否可以清理这些合并提交?我目前正在挑选提交,但不确定这是否是最好的。
阅读 git 日志后还能建议什么?
这些提交是因为您的同事在其本地分支上提交了一些工作,然后从远程中提取了新的提交。 关键是git pull
是两个 git 命令的组合, git fetch
和 git merge
. 一般来说,这些提交是相当无害的,但根据我的经验,它们偶尔会引起一些问题。
可以通过运行 git pull --rebase origin master
来避免提交。 这使得拉动成为git fetch
和git rebase
的组合。 这将搁置本地提交并从远程引入提交,然后一次应用一个本地提交。 至于您已经在遥控器中的提交,您可以尝试使用交互式变基来清理它们,但这会造成比它值得的更多的麻烦。 我只是尝试改变您的同事工作流程,并将其留在远程。 改变共享历史是一个冒险的过程,可能是一个痛苦的过程。
如果您只是接受同事应该没问题的提交,我不会挑选合并提交。 虽然一般来说,我更喜欢合并分支而不是试图挑选提交,因为这会导致具有不同sha的相同补丁的提交,并且可能导致合并分支比应有的更困难。