如何将我的特性分支提交更新到最新的主分支之上?

3
我大约一个月前创建了一个分支。自那时起,主分支已经进行了大量更新,功能分支并不包括这些更新。我想让我的提交放在更新的主分支之上,并且我只希望我的提交被发布。如何做到这一点(或者是否可能)?
更多信息: 我的本地分支提交已经推送到远程分支,但还没有推送到主分支。 我尝试过git rebase,但是我得到了一条消息,说我的分支已经分叉“分别有X和Y个不同的提交”。 我不确定git push -f是否能解决我的问题。我不想让我的远程分支注意到master分支上所做的更改。我只想让我的远程/本地分支“在最新版本的主分支之上”,并仍然只显示我的提交。 我不想将主分支“合并”到我的分支中,因为那样会使1000+个提交掩盖我的提交,而我只想让我的同行轻松地审查我的提交。

1
“新主分支”是指一个新的分支,还是仅指主分支有更新而特性分支没有? - Brian
我的意思是主分支已经进行了大量更新,而特性分支并不包括在内。 - esanz91
我已经修改了你的问题措辞以反映出来。如果你将更改带入特性分支,我认为没有好的方法可以隐藏这些更改不被主分支看到,但你应该能够在日志中仅显示你的更改。请参阅如何查看一个用户提交的git日志? 以了解如何做到这一点。 - Brian
2个回答

7
这是我用来将我的分支“davesBranch”与主分支合并的步骤:
  1. 切换到本地主分支,输入“git pull”命令。
  2. 切换回“davesBranch”分支,输入“git rebase master”命令。
  3. 等待命令执行完毕后,输入“git status”命令检查是否有冲突。
  4. 如果存在未合并的文件(文本颜色为红色),则需要手动修复冲突。修复完成后输入“git add .”命令。
  5. 然后输入“git rebase --continue”命令。
  6. 重复步骤3-5,直到没有冲突为止。(您会看到类似“Your branch and 'origin/davesBranch' have diverged”的提示)。现在可以输入“git push origin davesBranch --force”命令。

4
根据您的描述,我非常确定您需要使用git rebasegit push -f命令。 rebase命令将在更新的master分支上重放您的更改。这张图片(来自这里)很好地说明了发生的情况:

git rebase picture

在执行rebase后出现“have X and Y different commits each”消息是因为rebase会生成一系列新的提交,因此您本地分支的历史记录与远程分支的历史记录不再匹配。
如果您尚未与他人共享特性分支,则可以使用git push -f而无需担心问题。这将简单地重写远程特性分支以匹配您的本地特性分支。
如果其他人已经检出他们的功能分支,则需要通过运行git fetch,然后运行git reset --hard your/feature/branch重新同步其本地工作副本。

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