Git rebase 导致分支转移

Git rebase causes branch diversion

我查看了更多关于 git 变基导致分支转移的 posts,但想从你那里得到最好使用的输入:git 变基与 git 在以下场景中合并

假设我有 Master 分支和分支 A

分支A不仅是本地分支,还是远程分支

工作流程:

git co branch-A
git pull
Make some changes to branch-A
git add
git commit
git push

现在 master 发生了更多变化

git co master
git pull
git co branch-A
git rebase master

现在我有一堆冲突,git 要求我解决冲突,添加并应用 git rebase --continue 我解决冲突

git add
git rebase --continue

现在我收到消息说您的分支和 origin/branch-A 分道扬镳,分别有 3 次和 1 次不同的提交。使用 git pull 将远程分支合并到您的分支中。现在我发出 git pull from branch-A

git pull

现在我收到一堆自动合并的消息,最后大部分文件都有冲突,我最终解决了所有那些我在发出 git rebase --continue 之前解决的冲突。解决所有冲突后,我发出,

git add
git ci -m "Fixing the conflicts"
git push

现在一切正常,所有的冲突都解决了。但是为此,我最终做了两次冲突解决,一次是在 git rebase --continue 之前,另一次是在执行 git pull due to branch diversion 之后。

所以我的问题是,由于 branch-A 是远程的,是否首先发布 rebase 是正确的,还是我应该紧随其后,

git co master
git pull
git co branch-A
git merge master
<resolve conflicts>
git add
git commit
git push

抱歉很久了post,但我觉得,把我看到的东西放上去会更清楚。非常感谢您阅读我的 post,非常感谢您的回复。

最大的问题是,branch-A 是否被其他人使用。如果是这样,你永远不应该变基,因为变基会重写历史。

您还混合了变基和合并,因为 pull 进行了隐式合并。在这种情况下使用变基的唯一原因是线性化历史。

但是你为什么要在 rebase 之后拉?您应该简单地 push --force 并覆盖历史记录。如果你坚持...

拉(合并)和变基是通过不同的历史获得相同合并内容的两种替代方法。您应该使用其中之一,但不能同时使用。