从差异中恢复一个更改

时间:2013-06-13 13:36:14

标签: git diff command-line-interface dvcs revert

在提交之前,我看到git diff我做了一个我不想做的改变。有没有办法恢复这一改变?

我想我可以使用git add -p提交我打算做的更改,然后结帐主人。有没有更好的方法,最好是一种不需要我提交的方式?

这是Kubuntu Linux 12.10上的Git 1.7.10.4。谢谢!

3 个答案:

答案 0 :(得分:4)

git reset --patch(或git reset -p)可以满足您的需求。

documentation的相关位:

  

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)。

答案 1 :(得分:2)

git checkout也有-p选项,基本上与-p中的git add相同,但相反。

只是做:

git checkout -p <path>

(如果你愿意,可以没有path

git add -p一样,您可以选择要进行哪些更改,在此处选择要还原的更改。

答案 2 :(得分:0)

我没有银弹要提交,但是当我有这样一个用例时,我会选择git gui。我只需索引我需要的所有更改,然后还原不需要的更改。

这与git add -p相同,但git gui使操作非常整洁。