2013-10-01 36 views
6

一位同事正在过了几个星期的一个要素,而现在的Git修订的样子:为什么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日志后还有什么建议吗?

+0

为什么要清洗呢? –

+0

他们看起来很丑陋的git的承诺日志,铺设到合并不久前已提交引用。 – poseid

回答

16

这些提交是因为你的同事在本地分支上做了一些工作,然后从远程提交了新的提交。关键在于git pull是二GIT中的命令,git fetchgit merge的组合。通常这些提交是相当无害的,但根据我的经验,它们偶尔会引起一些问题。

提交可以通过运行git pull --rebase origin master来避免。这使得拉组合git fetchgit rebase。这将搁置本地提交并从远程引入提交,然后逐个应用本地提交。至于你已经在远程的提交,你可以尝试使用交互式转化来清除它们,但这会造成比它的价值更大的麻烦。我只会尝试改变你的同事的工作流程,并将其留在遥控器上。改变共享历史是有风险的,可能是一个痛苦的过程。

如果你只是承诺你的同事应该没问题,我就不会选择合并提交。虽然一般,我宁愿合并分支,而不是试图摘樱桃承诺,因为它导致在具有不同SHA的相同的修补程序,并可能导致合并分支比它应该是更加困难的提交。

+0

好的,谢谢!我错过了取+重订,取+合并 – poseid

+0

合并分支与“错”合并提交,感觉就像引入混乱的澄清,这就是为什么我与樱桃采摘基本同意提交。之后,我做了一个git rebase - 交互和修复多个提交。缺点是SHA现在已经搞乱了,但是分支现在已经关闭以用于开发。那谢谢啦! – poseid

+0

看看混帐流..这是管理一个很好的策略,复杂的历史承诺。即保留一些长时间运行的分支,这些分支被保留用于成熟的工作和更加动态的特征从开发分支http://alblue.bandlem.com/2011/11/git-tip-of-week-git-flow.html http: //nvie.com/posts/a-successful-git-branching-model/ –

相关问题