本地 Git 分支在交互式 rebase 后与远程分支不一致

3

我有一个本地分支(CRM-ayrshireminis),其中包含了几个提交,这些提交已经被推送到了远程分支(origin/CRM-ayrshireminis)。这个分支是从一个星期前的develop分支创建的,在这之后,其他协作者在这个分支上工作了一个星期。

我的目标是将origin/develop分支最新代码合并到我的特性分支CRM-ayrshireminis中。

我所做的是:

git checkout develop
git pull
git rebase -i develop CRM-ayrshireminis

我有两个提交记录,所以我将它们压缩成一个,然后退出。我收到了消息,显示 Rebasing (2/2),所以看起来没问题...

[crmpicco@dev53 ayrshireminis]$ git status
# On branch CRM-ayrshireminis
# Your branch and 'origin/CRM-ayrshireminis' have diverged,
# and have 2 and 2 different commits each, respectively.
#   (use "git pull" to merge the remote branch into yours)

我是否有办法将develop分支的提交rebase到我的分支,并将我的两个提交压缩成一个提交呢?

1个回答

4
有没有办法让我将develop分支的提交rebase到我的分支中?
你的做法是反过来的。你正在将develop分支移动到你的分支之上,这必然导致它与origin/develop分支不同。如果你的意图是将develop分支的新提交包含在你的分支中,你实际想要的是将你的分支rebase到develop分支之上。
git fetch
git checkout CRM-ayrshireminis
git rebase -i origin/develop
git push -f origin CRM-ayrshireminis

谢谢你的回复。最后那个命令 git rebase -i origin/develop 是正确的吗?我在研究的时候没有看到过引用origin分支的情况。如果我在develop上拉取了一个请求,然后执行 git rebase -i develop,这样做基本上是一样的吗? - crmpicco
是的,这是一样的。在 origin/develop 上进行变基意味着您不必担心首先检出 develop 并执行 git pull。如果您已经在自己的分支上,只需运行 git fetch; git rebase origin/develop 即可完成 - 完全无需分支切换。 - user229044
我刚刚尝试了一下,遇到了完全相同的问题,例如 Your branch and origin/CRM-ayrshireminis have diverged。正如你所说,我已经在我的功能分支上,并执行了 git fetchgit rebase -i origin/develop,但是它仍然让我面临同样的问题。我不明白为什么会发生这种情况。有任何想法吗? - crmpicco
2
@crmpicco 这个命令的完整目的是使你的两个分支分叉。一旦你完成了变基,你需要使用 git push -f 命令来覆盖远程分支的状态以匹配你自己的分支。如果你不想让你的历史记录分叉,就不能使用变基。 - user229044
非常好。谢谢你的解释。 - crmpicco

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