[英]Syncing 2 branches after git merge
如何保持 2 个 Git 分支同步?
我目前有一个master
分支和一个gh-pages
分支以及各自的遥控器。 每当我按如下方式提交时, master
和gh-pages
分支都共享相同的提交 ID:
git checkout master
git commit -am "message"
git checkout gh-pages
git merge master
我的日志看起来像这样(使用git log --graph --oneline --all --decorate
):
在我解决了合并冲突之后,每个合并都会收到自己的提交:
我的问题是,如何对齐 2 个分支,以便像以前一样在单个“图形轨道”上进行合并?
我试图根据这个答案pull
,但无济于事。
它看起来像犯50b6dec
加入到gh-pages
分支,并承诺e43c01f
被上进行master
在同一时间,这是什么原因造成合并冲突。
因此, gh-pages
有 1 个master
没有的提交。 因此,此后任何时候合并时,Git 都无法进行快进合并。 (快进合并为您提供了以前的线性历史。)因此,解决方案是:
git checkout master
git merge gh-pages
为了防止将来再次发生这种情况,请将您的流程更改为:
git checkout master
git commit -am "message"
git checkout gh-pages
git merge --ff-only master
如果gh-pages
有master
没有的任何提交,则--ff-only
标志将中止合并并出现错误。
如果你想改写历史,让它仿佛从未发生过,你也可以这样做。
首先,确保您在master
:
git checkout master
现在变基:
git rebase 50b6dec
您将不得不再次解决该冲突。 完成后,执行:
git rebase --continue
当 rebase 完成后,你必须强制更新origin
:
git push --force-with-lease origin master
您还必须移动gh-pages
分支。 做:
git branch -f gh-pages master
git push --force-with-lease origin gh-pages
这会给你一个看起来像这样的历史:
* f218f70' (HEAD -> master) Added Scatterplot functionality to check ratings
* cb79b79' Squashed bug
* fcf0d8a' Small change
* e43c01f' Small change
* 50b6dec Small change
* a217267 Small change
强制性警告:由于 rebase 会重写历史记录,因此对于在此分支上工作的任何其他人来说,这可能是危险的/具有破坏性的。 确保您与正在合作的任何人清楚地传达您所做的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.