这发生在我身上偶尔(好吧,也许频繁):git的变更中承诺而没有后续变化一个
注意:下面的一切发生了,我推了。
我的软件项目需要一个新功能。 我编码并测试,直到它工作。 我不得不腾出空间给新的功能,所以我把使用git add -i
将更改两次提交:
A --- R --- F
提交R
介绍了重构更改,F
添加代码的新功能。
现在我意识到我在分割变化时犯了错误,所以F
中的一些实际上已经属于R
,反之亦然。 因此,基本上,R
是搞砸了,并没有通过测试(而F
的最终状态是完美的)。
要解决这个问题,我在一个临时分支上检查R
并修复所有问题。 我git commit --amend
,现在我有
A --- R --- F
\
\-- R'
因此,所有现在缺少移动F
到新的分支。 到目前为止,我的解决方案是做git rebase --onto R-prime R F
(我实际上使用分支名称,但你明白我的意思)。 但问题是,它不正是我想要的:git
明白我想移动改变和R'
之间R
F
到,给我一个承诺F'
可能因F
不同。 但是,我想要F'
与F
完全一样,除了它的祖先。 通常,rebase
会导致难以解决的冲突(即容易出错)。
有没有办法告诉git
,我想移动快照F
,而不是差异R
→F
?
我明白发生了什么,但这不是我在午夜睡觉前做的事情......无论如何,谢谢! – user189