如何避免GitHub / BitBucket上的合并提交地狱

在我们的回购中,我们结束了很多这样的提交:

Merge branch 'master' of bitbucket.org:user/repo 

每当开发人员将他/她的本地分支同步到顶级回购时,就会发生这种情况。

有没有办法避免这个合并 – 提交地狱混乱所有的回购日志? 当以某种方式启动拉取请求时,是否可以避开它们?

我知道我可以做git rebase,如果这是在我的本地虚拟机中完成的,GitHub / BitBucket UI中是否有任何等价物?

你们怎么做?

合并之前的Rebasefunction分支

如果你想避免合并提交,你需要确保所有的提交都是快进的。 你可以通过确保你的特性分支在合并之前干净地粘贴到你的开发线上来这样做:

 git checkout master git checkout -b feature/foo # make some commits git rebase master git checkout master git merge --ff-only feature/foo 

Rebase也有很多的标志,包括用-i标志交互重新绑定,但是如果你想保持尽可能简单的事情,并且想要保留所有的分支历史,你可能不需要这样做。

使用--ff-only标志

除了--ff-only之外,使用--ff-only标志将确保只允许快进提交。 如果它是一个合并提交,则不会进行提交。 git-merge(1)手册页说:

–ff只

拒绝合并并以非零状态退出,除非当前HEAD已经是最新的或合并可以被解决为快进。