git更改中间提交而不更改后面的提交
这种情况偶尔发生在我身上(嗯,可能经常发生): 注意:在我按下按钮之前,会发生以下所有情况 我的软件项目需要一个新功能。 我编写代码并测试,直到它工作。 我不得不为新特性腾出空间,所以我使用git更改中间提交而不更改后面的提交,git,rebase,Git,Rebase,这种情况偶尔发生在我身上(嗯,可能经常发生): 注意:在我按下按钮之前,会发生以下所有情况 我的软件项目需要一个新功能。 我编写代码并测试,直到它工作。 我不得不为新特性腾出空间,所以我使用git add-I将更改分为两次提交: A --- R --- F 提交R引入重构更改,F为新功能添加代码 现在我意识到我在划分更改时犯了错误,因此F中的一些更改实际上已经属于R,反之亦然。 因此,基本上,R混乱不堪,无法通过测试(而F的最终状态是完美的) 为了解决这个问题,我在一个临时分支上签出R,然后修
git add-I
将更改分为两次提交:
A --- R --- F
提交R
引入重构更改,F
为新功能添加代码
现在我意识到我在划分更改时犯了错误,因此F
中的一些更改实际上已经属于R
,反之亦然。
因此,基本上,R
混乱不堪,无法通过测试(而F
的最终状态是完美的)
为了解决这个问题,我在一个临时分支上签出R
,然后修复所有问题。
我git提交--amend
现在我有了
A --- R --- F
\
\-- R'
因此,现在缺少的就是将F
移动到新分支。
到目前为止,我的解决方案是在R-prime rf上做git-rebase(实际上我使用了分支名称,但你明白我的意思了)。
问题是,这并不完全是我想要的:git
理解我想要将R
和F
之间的更改移动到R'
,给我一个提交F'
,这可能不同于F
。
但是,我希望F'
与F
完全相同,除了它的祖先。
通常,rebase
会导致难以解决的冲突(即容易出错)
有没有办法告诉git我想移动F
的快照,而不是diffR
→F
?假设您当前的头部位于R'
,它应该是这样的(用哈希代替F
和R'
)
它按原样从F
中获取树,并将其作为R'
的子级提交,替换F
中的提交消息,然后调用编辑器It您想更改它我了解发生了什么,但这不是我在午夜睡觉前要做的事情。。。无论如何谢谢你!
git reset --hard F
git reset --soft R'
git commit -c F