如何将我的功能分支提交更新到更新的主分支之上?

How do I update my feature branch commits to be on top of the updated master branch?

我大约一个月前创建了一个分支。 master 分支从那时起进行了大量更新,而 feature 分支不包含这些更新。我希望我的提交位于更新的 master 分支之上,我只希望我的提交被发布。我该怎么做(或者这甚至可能)?

更多信息: 我的本地分支提交已经被推送到远程分支,但不是主分支。

我尝试了 git rebase,但后来我收到一条消息,说我的分支已经分叉 "and have X and Y different commits each, respectively."

我不确定 git push -f 是否能解决我的问题。我不希望我的远程分支记录在 master 分支上所做的更改。我只希望我的 remote/local 分支到最新版本的 master 的 "sit on top",并且仍然只显示我的提交。

我不想将 master“合并”到我的分支中,因为那样的话 1000 多个提交会使我的提交黯然失色,我只希望我的提交能够被我的同行轻松审查。

根据您的描述,我很确定 git rebasegit push -f 是您想要的。 rebase 命令在更新后的 master 分支上重播您的更改。这张图(来自here)很好地说明了发生的事情:

你在变基后收到 "have X and Y different commits each" 消息,因为变基会导致一系列新的提交,所以你的本地分支的历史不再与你的远程分支的历史相匹配。

如果您没有与其他人共享您的功能分支,使用 git push -f 没有问题。这将简单地重写远程功能分支以匹配您的本地功能分支。

如果其他人检查了他们的功能分支,他们将需要重新同步他们的本地工作副本,可能是 运行 git fetch 然后是 git reset --hard your/feature/branch

这就是我用 Master 重新设置分支 "davesBranch" 的方法。

  1. 切换到您的本地主机并输入“git pull”。
  2. 切换回 "davesBranch" 并输入“git rebase master”。
  3. 完成后,输入“git status”检查冲突。
  4. 如果有任何文件未合并,即它们的文本颜色为红色,则它们存在冲突,需要您手动修复它们。修复它们后键入“git 添加 .”.
  5. 然后输入“git rebase --continue”。
  6. 重复步骤 3 - 5 直到没有冲突。 (您会看到类似 "Your branch and 'origin/davesBranch' have diverged" 的内容)。现在您可以键入“git push origin davesBranch --force”。