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

时间:2015-10-25 18:03:10

标签: git git-rebase git-add

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

2 个答案:

答案 0 :(得分:4)

问题是,在交互式rebase期间HEAD没有指向之前的提交,因此git reset HEAD没有做任何事情。

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

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

答案 1 :(得分:1)

在重置基准HEAD期间,指向已添加到基准的最新提交。因此,两次变基操作之间的git reset head不会执行任何操作。

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

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

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

$ git checkout .