【问题标题】:Git branch has diverged after rebase, so why rebase?在 rebase 之后 Git 分支已经发散了,那为什么要 rebase 呢?
【发布时间】:2016-04-13 05:57:33
【问题描述】:

最近我收到通知说我的分支发生了分歧。那是我创建了一个特性分支,将其推送到远程,并在几天后与 master 进行了 rebase 时,我再次开始工作。

git checkout -b feature-branch
git push origin feature-branch:feature-branch

...当在主人...

git pull origin master
git checkout feature-branch
git rebase master

但是当我想再次推送我的分支时,它会说:

On branch feature-branch
Your branch and 'origin/feature-branch' have diverged,
and have 67 and 1 different commit each, respectively.

我在“Git branch diverged after rebase”中找到了这个答案:

既然你已经推送了分支,你应该已经合并到 源分支,而不是针对它进行变基。

问题

阅读this 后,我仍然不完全理解我应该在流程中做哪些不同的事情,以及为什么我仍然想使用 git rebase。希望有人能解释一下,谢谢!

【问题讨论】:

  • push -f 怎么样?在你的链接中提到(stackoverflow.com/a/26349885/6309)如果你一个人在这个分支上工作,你不能强制推送。
  • 我在一个团队中工作,所以我认为覆盖远程分支不是一个好主意...
  • 那么你就没有变基了。仅合并。
  • 感谢您的回复!所以只有在你还没有推送你的分支时才变基?

标签: git branch git-merge git-rebase


【解决方案1】:

这个想法是仅在您尚未推送时才重新设置基准,以重播您的 本地 提交。

一旦你推送(并且在团队中工作),你不应该在 master 之上重新设置分支,因为它会重写它的 SHA1,迫使你强制推送分支的新状态。

在这里最好将git merge master 放入您的分支:您在本地解决冲突,然后您可以进行更多提交,并定期推送。

在“What is the difference between merging master into branch and merging branch into master?”查看更多信息

【讨论】:

  • 感谢您的解释!让它更清晰:)
  • @Gluttton 是的,谢谢。我已经编辑了答案来修正这个错字。
  • 这个旧答案的子问题。从feature branchgit rebase master 然后git pull,处理合并和git push 怎么样?如果远程分支与本地分支一致(你推送的是最新版本),会出现什么问题?也许我误解了 Git 的内部工作原理。
  • @Eppilo 当然,只是在master之上rebase的feature会重写它的历史,导致强制推送。
猜你喜欢
  • 2011-07-12
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 2015-05-02
  • 2011-09-11
  • 2017-12-22
相关资源
最近更新 更多