如何在交互式 rebase 期间执行 git add --patch?

drs*_*drs 5 git git-rebase git-add

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

drs*_*drs 5

问题是,在交互式 rebase 期间HEAD不指向先前的提交,因此git reset HEAD不执行任何操作。

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

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


Dan*_*mer 1

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

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

$ git rebase -i ... # change a commit to "edit"
$ git reset HEAD^
$ git add --patch
$ git commit
Run Code Online (Sandbox Code Playgroud)

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

$ git checkout .
Run Code Online (Sandbox Code Playgroud)