我如何在交互式变基期间执行 git add --patch?

How can I do a git add --patch during an interactive rebase?

我想返回并删除一个提交的几个部分,即两个提交。我希望我可以做 git rebase -i HEAD^^edit 提交,然后在文件上使用 git add --patch <file>。但是,在变基期间,git reset HEAD <file> 似乎不起作用,因为当我尝试 git add --patch <file> 时,它说没有任何变化。

问题是,在交互式变基过程中,HEAD 没有指向之前的提交,所以 git reset HEAD 什么也没做。

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

然后您可以 运行 git checkout -- <file> 放弃其余的更改。

在变基过程中 HEAD 指向已添加到基中的最新提交。所以 git reset head 在两个 rebase 操作之间什么都不做。

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

$ git rebase -i ... # change a commit to "edit"
$ git reset HEAD^
$ git add --patch
$ git commit

可能放弃所有未提交的剩余更改:

$ git checkout .