在提交之前,我看到git diff
我做了一个我不想做的改变。有没有办法恢复这个单一的变化?
我想我可以用它git add -p
来提交我确实打算进行的更改,然后提交给 checkout master。有没有更好的方法,最好是不需要我承诺的方法?
这适用于 Kubuntu Linux 12.10 上的 Git 1.7.10.4。谢谢!
在提交之前,我看到git diff
我做了一个我不想做的改变。有没有办法恢复这个单一的变化?
我想我可以用它git add -p
来提交我确实打算进行的更改,然后提交给 checkout master。有没有更好的方法,最好是不需要我承诺的方法?
这适用于 Kubuntu Linux 12.10 上的 Git 1.7.10.4。谢谢!
git reset --patch
(或git reset -p
)做你想做的事。
文档的相关位:
git reset (--patch | -p) [] [--] […]
以交互方式选择索引和(默认为 HEAD)之间的差异。选择的大块反向应用于索引。
这意味着 git reset -p 与 git add -p 相反,即您可以使用它来选择性地重置大块。请参阅 git-add(1) 的“交互模式”部分了解如何操作 --patch 模式。
请注意,git reset
(应用于路径)确实匹配git add
- 后者暂存文件或块,而前者取消暂存它们,因此git reset
支持该--patch
选项git add
。
您可能也有兴趣了解git checkout --patch
(或git checkout -p
)。
git checkout
也有-p
一个选项,它基本上与-p
in相同git add
,但相反。
做就是了:
git checkout -p <path>
(或者path
如果你想没有)
就像git add -p
您选择要更改的阶段一样,在这里您可以选择要还原的更改。
我没有要提交的灵丹妙药,但是当我有这样的用例时,我会选择git gui
. 我只是索引我需要的所有更改,然后恢复不需要的更改。
这与 a 相同git add -p
,但git gui
使操作非常整洁。