在git合并后同步2个分支
如何保持2个Git分支的同步 我目前有一个在git合并后同步2个分支,git,git-merge,Git,Git Merge,如何保持2个Git分支的同步 我目前有一个master分支和一个gh-pages分支以及相应的遥控器。每当我提交时,master和gh页面分支共享相同的提交id,如下所示: git checkout master git commit -am "message" git checkout gh-pages git merge master 我的日志看起来是这样的(通过git log--graph--oneline--all--decoration实现): 在我解决的合并冲突之后,每个合并都会
master
分支和一个gh-pages
分支以及相应的遥控器。每当我提交时,master
和gh页面
分支共享相同的提交id,如下所示:
git checkout master
git commit -am "message"
git checkout gh-pages
git merge master
我的日志看起来是这样的(通过git log--graph--oneline--all--decoration实现):
在我解决的合并冲突之后,每个合并都会收到自己的提交:
我的问题是,如何对齐这两个分支,使合并像以前一样发生在单个“图形轨迹”上
我试图根据拉取
,但没有成功。看起来提交50b6dec
被添加到gh页面
分支,同时提交e43c01f
是在主机
上进行的,这就是导致合并冲突的原因
因此,gh页面
有一个提交,而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页面
有任何master
没有的提交,则--ff only
标志将中止合并并出错
如果你想改写历史,就好像这从未发生过一样,你也可以这样做
首先,确保您在主机上
:
git checkout master
现在重新设定基准:
git rebase 50b6dec
你必须再次解决这场冲突。完成后,请执行以下操作:
git rebase --continue
重新基准完成后,您必须强制更新原点:
git push --force-with-lease origin master
您还必须移动gh页面
分支。做:
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
强制性警告:由于回基会重写历史记录,这可能会对其他在此分支上工作的人造成危险/破坏。确保你能清楚地与合作伙伴交流你所做的事情。非常感谢@ScottWeldon给出了一个伟大而彻底的答案-不仅解决了我的主要问题,而且解决了我关于清洁历史的未说出口的问题。。。