有问题我这里有几个人的工作就可以了git仓库。 我已经设置了branch.master.rebase = true
和branch.master.mergeoptions = --no-ff
,但我遇到了一个问题:混帐:试图保持一个干净的历史树
有人试图将一个功能分支合并到master中。合并是成功的,git说该分支在原产地/主人之前有30次提交。当他试图推动这些变化时,git拒绝了推送,因为那里的遥控器发生了变化,所以他不得不拉扯。当他做了拉,git为合并到主人的承诺进行了rebase,现在只有29次提交给主人。
我相信这次合并提交丢了,因为之后的底垫中,从功能分支来的地方重新申请新的提交的提交,而不是提交。
推后,树是这样的:
* c3'(head, master, origin/master)
* c2'
* c1'
| * c3 (feature_branch, origin/feature_branch)
| * c2
| * c1
|/
*
这就是我想实现:
* c4 (head, master, feature_branch, origin/master)
| \
| * c3 (origin/feature_branch)
| * c2
| * c1
|/
*
合并看起来像一个快进合并,有什么我”试图避免,保持分支历史。
上我能做些什么来避免这种情况的任何提示?
感谢,
编辑: 本文descibes我的问题: http://notes.envato.com/developers/rebasing-merge-commits-in-git/
现在我知道的--preserve-合并为git rebase
选项,但有没有办法让这个选项默认?
否则,开发人员将不得不git fetch
和git rebase origin/master
而不是只有git pull
。
尝试此链接:http://www.randyfay.com/node/89帮助我最多。 – 2011-12-29 13:09:23
幸运的是,这里的开发人员不知道'git push --force' .. 但是我不确定这篇文章会有什么帮助,请您解释一下更多? 我们将feature_branches推送到远程,因为每个工作在被合并到master之前都会被检查,所以我们不能在合并之前重新分支分支(在第一次推送分支之前,指示devs从master转移)。 – 2011-12-29 13:40:21
就我个人而言,我喜欢“合并工作流的替代方案”中提到的拉取请求策略。您可以使用http://code.google.com/p/gerrit/进行此审核流程。负责与主分支合并的一个人应该是限制性的,并且如果他们不可合并,则拒绝这些请求。 – 2011-12-29 13:58:12