我如何在交互式变基期间执行 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 .
我想返回并删除一个提交的几个部分,即两个提交。我希望我可以做 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 .