如何在交互式重新基址期间执行git添加补丁?

如何在交互式重新基址期间执行git添加补丁?,git,git-rebase,git-add,Git,Git Rebase,Git Add,我想返回并删除一个提交的几个部分,即返回两次提交。我希望我可以执行git-rebase-I HEAD ^,编辑提交,然后对文件使用git-add--patch。但是,在重新基址期间,git reset HEAD似乎不起作用,因为当我尝试git add--patch时,它说没有任何变化。问题是,在交互式重新基址期间,HEAD没有指向上一次提交,因此git reset HEAD没有做任何事情 相反,使用git log查找上一次提交的哈希,然后运行git reset,然后运行git add--patc

我想返回并删除一个提交的几个部分,即返回两次提交。我希望我可以执行
git-rebase-I HEAD ^
编辑提交,然后对文件使用
git-add--patch
。但是,在重新基址期间,
git reset HEAD
似乎不起作用,因为当我尝试
git add--patch
时,它说没有任何变化。

问题是,在交互式重新基址期间,
HEAD
没有指向上一次提交,因此
git reset HEAD
没有做任何事情

相反,使用
git log
查找上一次提交的哈希,然后运行
git reset
,然后运行
git add--patch


然后,您可以运行git checkout--
放弃其余更改。

在rebase期间
HEAD
指向已添加到基础上的最新提交。所以,在两个重基操作之间,git重置头的操作没有任何作用

您需要在使用git reset HEAD^之前重置为1提交,然后(以交互方式)添加所需的更改

$ git rebase -i ... # change a commit to "edit"
$ git reset HEAD^
$ git add --patch
$ git commit
可能会放弃所有未提交的剩余更改:

$ git checkout .

令人惊讶的是,这个问题/答案没有获得更多的选票?HEAD从不指向上一个提交,而是始终指向最新的提交。使用修订哈希可以工作,但不是必需的。