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