在合并我的变化对上游的主,我经常发现自己做了以下内容:覆盖和推进一个Git分支
git checkout somefeature
git checkout -b integration
git rebase master # resolving conflicts along the way
git checkout somefeature
git merge integration # or rebase, doesn't matter in this example
我通常会发现,并购整合分支回我的特性分支做失败到一些冲突。我的第一个问题是,“如果我的整合分支是某些特征的后代,并且我已经解决了与上游主方的冲突,为什么会发生这种情况?”
如果您想知道为什么我要使用集成分支开始,那是为了防止我的当前分支出现半失败合并。
我目前的解决方法是这样:
git checkout integration
git branch -f somefeature # overwrite the branch
现在的问题是,我不能把我变回远程分支:
git push origin somefeature
! [rejected] somefeature -> somefeature (non-fast forward)
所以现在我不得不删除远程分支并重新推送我的更改。这不是实现此目的的最佳方式,所以我想知道:“覆盖分支并将更改推送到远程分支的最佳方法是什么?”
请注意,尽管您不应该更改已发布的提交,但与您一起工作的其他人也会遇到同样的问题,因为他们已经在其存储库中复制了不兼容的提交。只要它是本地的,重新启动就没问题,但重新提交并重新发布它们是邪恶的 - 因此Git会拒绝* *错误(这很聪明,并且指出您可能做错了事情)。 – poke 2011-01-19 21:48:54