合并 git 后同步 2 个分支

3

如何使两个Git分支同步?

我目前有一个master分支和一个gh-pages分支,以及相应的远程分支。每当我提交时,mastergh-pages分支都共享相同的提交ID:

git checkout master
git commit -am "message"
git checkout gh-pages
git merge master

我的日志看起来像这样(使用git log --graph --oneline --all --decorate实现):

single-tracked-graph

在解决了合并冲突之后,每个合并都会生成自己的提交,如下所示:

double-tracked-graph

我的问题是,如何将这两个分支对齐,以便合并将像之前一样在单个“图形轨道”上发生?
我尝试按照此答案进行pull,但没有成功。
1个回答

1
回复内容存在敏感词^**$没有。所以每次合并后,Git无法进行快进式合并(快进式合并是您之前线性历史的来源)。因此,解决方案是:
git checkout master
git merge gh-pages

为了避免类似情况再次发生,将您的流程更改为以下内容:
git checkout master
git commit -am "message"
git checkout gh-pages
git merge --ff-only master

--ff-only 标志将在 gh-pagesmaster 多提交时,以错误终止合并。


如果您想重写历史记录,使其好像从未发生过一样,也可以这样做。
首先,请确保您在“主”分支上:
git checkout master

现在进行变基操作:
git rebase 50b6dec

您需要再次解决该冲突。完成后,请执行以下操作:
git rebase --continue

完成变基后,您将需要强制更新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

必要的警告: 因为变基会重写历史记录,所以这对于与您协作的其他人可能是危险/有破坏性的。请确保您清楚地向所有合作者传达您所做的事情。


1
非常感谢@ScottWeldon提供了一份出色而全面的答案——不仅解决了我的主要问题,还解决了我关于清除历史记录的隐含问题... - lve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接