我在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.
答案 0 :(得分:2)
可以很容易地做到这一点:
git rebase --onto origin/master origin/X origin/Y
鉴于您正在使用远程引用,您将处在分离的HEAD上,因此必须执行此操作以将结果分支推入原始节点的分支Y:
git push origin -f HEAD:Y
答案 1 :(得分:0)
与Git一样,可能有很多方法可以实现此目的,但是以下方法应该起作用:
Y
上将其重置为master
:git reset --hard master
。git cherry-pick C..F
之间选择提交(假设E
和F
是分支中C
之后的第一个和最新的提交ID)。编辑:正如@ eftshift0指出的那样,我最初在git cherry-pick
语句中输入了错误的提交ID-现在已解决。