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

时间:2015-09-03 15:22:12

标签: git git-merge rebase git-rebase

我在一个月前创建了一个分支机构。从那时起,主分支已经进行了大量更新,并且功能分支不包含这些更新。我希望我的提交位于更新的主分支之上,我只希望我的提交发布。我该怎么做(或者这甚至可能)?

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

我尝试了git rebase,但后来我收到一条消息,说我的分支已分歧"并分别对X和Y进行不同的提交。"

我不确定git push -f是否能解决我的问题。我不希望我的远程分支记录在主分支上所做的更改。我只想让我的远程/本地分支机构“坐在最前面”#34;最新版本的master仍然只显示我的提交。

我不想将master“合并”到我的分支中,因为1000多次提交会掩盖我的提交,我只希望我的提交能够轻易地审核我的提交。

2 个答案:

答案 0 :(得分:2)

根据您的说明,我非常确定git rebasegit push -f是您想要的。 rebase命令会在更新的master分支之上重播您的更改。这张照片(来自here)很好地代表了所发生的事情:

git rebase picture

你得到"每个提交X和Y不同的提交"由于rebase导致一系列新提交,因此本地分支的历史记录不再与远程分支的历史记录匹配。

如果您尚未与其他人共享您的功能分支,则使用git push -f时没有任何问题。这将只是重写远程功能分支以匹配您的本地功能分支。

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

答案 1 :(得分:1)

这就是我为了改变我的分支而做的事情" davesBranch"和师父一起。

  1. 切换到您当地的母公司并输入" git pull "。
  2. 切换回" davesBranch"并输入" git rebase master "。
  3. 完成后,通过键入" git status "来检查冲突。
  4. 如果任何文件未合并,又称其文本颜色为红色,则会出现需要您手动修复它们的冲突。修好后输入" git add。"。
  5. 然后输入" git rebase - 继续"。
  6. 重复步骤3 - 5直到没有冲突。 (你会看到像"你的分支和' origin / davesBranch'已经分歧了#34;)。现在你可以输入" git push origin davesBranch --force "。