9

一位同事在一个功能上工作了几个星期,现在 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 日志后还有什么建议?

4

1 回答 1

21

这些提交是因为您的同事在他们的本地分支上提交了一些工作,然后从远程提取了新的提交。关键是git pull两个 git 命令的组合,git fetchgit merge. 一般来说,这些提交是相当无害的,但根据我的经验,它们偶尔会引起一些问题。

可以通过运行来避免提交git pull --rebase origin master。这使得 pull 是git fetch和的组合git rebase。这将搁置本地提交并从远程引入提交,然后一次应用一个本地提交。至于你已经在你的遥控器中的提交,你可以尝试使用交互式 rebase 来清理它们,但这会带来更多的麻烦。我只想尝试改变您的同事的工作流程,并将其留在远程。改变共享历史是一个冒险的过程,而且可能是一个痛苦的过程。

如果你只是接受你的同事有你应该没问题的提交,我不会挑选合并提交。虽然一般来说,我更喜欢合并分支而不是尝试挑选提交,因为它会导致提交具有不同 sha 的相同补丁,并且可能导致合并分支比应有的更困难。

于 2013-10-01T13:33:35.067 回答