Git将子分支重新设置为主节点

时间:2020-03-29 13:28:39

标签: git rebase

我在Git存储库中遇到以下情况

   A - B [origin/master]
    \
     C [origin/X]
      \
       E - F [origin/Y]

当我开始Y时,我没有意识到我已经从X分支了,我打算从master分支。

如何在不包含提交Y的情况下将C迁移到主 上?

X上的更改是文件,Y上的提交未触及该文件)

我想得出以下结论:

   A - B [origin/master]
    \   \
     \   E - F [origin/Y]
      \
       C [origin/X]  

我尝试了git rebase master,但似乎没有任何改变,输出是:

Current branch Y is up to date.

2 个答案:

答案 0 :(得分:2)

可以很容易地做到这一点:

git rebase --onto origin/master origin/X origin/Y

鉴于您正在使用远程引用,您将处在分离的HEAD上,因此必须执行此操作以将结果分支推入原始节点的分支Y:

git push origin -f HEAD:Y

答案 1 :(得分:0)

与Git一样,可能有很多方法可以实现此目的,但是以下方法应该起作用:

  1. 在分支Y上将其重置为mastergit reset --hard master
  2. 以樱桃方式在git cherry-pick C..F之间选择提交(假设EF是分支中C之后的第一个和最新的提交ID)。

编辑:正如@ eftshift0指出的那样,我最初在git cherry-pick语句中输入了错误的提交ID-现在已解决。

相关问题