我已经做了很多关于变基和合并我们的远程分支的研究/实践,但是我找不到最终不会导致重复提交或远程分支的非快速推送的解决方案。这就是我想要做的。
我们有两个分支,master
(跟踪origin/master
)和hebe
(跟踪origin/hebe
)。一个月前,hebe
恰当地从master
分支出来。每天都有几个开发人员在这两个分支机构工作。
master
将继续维护,并且在公共代码中有一些错误修复,应该在hebe
分支中反映/更新。但是,hebe
中的新代码都不会进入master
我试过了:
git rebase master hebe
从日志中看起来正是我们想要的,hebe
提交位于最新的master
之上,但是当我尝试推送hebe
时,它会发出警告非快速推送origin/hebe
。
或许我们正在从错误的方向接近这个问题,子模块将是适当的解决方案?
答案 0 :(得分:2)
你应该只在非常非常罕见的情况下重新绑定已经推送并与其他人共享的分支,因为你重写了历史记录,从而改变了提交的sha。这导致您提到的重复提交,因为不同的sha意味着git的不同提交 在您的情况下,最好将master与
合并$ git checkout hebe
$ git merge master
$ git push origin hebe
通过这个,您可以将所有更改从master合并到hebe
,但没有任何内容返回到master,并且所有shas都保持不变。合并将创建一个所谓的合并提交(如果不能进行快进合并)。
因为它非常重要并导致如此多的混乱,我不得不在最后再说一遍:除非你完全确定你在做什么,否则决定不再使用分支。
我强烈建议您阅读以下(免费在线提供)第http://git-scm.com/book页的第3章,以便更好地了解合并/重新定位的工作原理