【问题标题】:Revert one change from the diff从差异中恢复一项更改
【发布时间】:2013-06-13 13:36:14
【问题描述】:

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

我想我可以使用git add -p 提交我确实打算进行的更改,然后提交给 checkout master。有没有更好的方法,最好是不需要我提交的方法?

这适用于 Kubuntu Linux 12.10 上的 Git 1.7.10.4。谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      只要做:

      git checkout -p <path>
      

      (如果你愿意,也可以不带path

      git add -p 一样,您可以选择阶段的哪些更改,在这里您可以选择要还原的更改。

      【讨论】:

      • 不完全是:git checkout -p 更新工作树中的文件,而不涉及索引。
      • @kostix 是的,这正是 OP 所要求的。
      【解决方案3】:

      我没有要提交的灵丹妙药,但是当我有这样的用例时,我会选择git gui。我只是索引所有我需要的更改,然后恢复不需要的更改。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-09
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 2014-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多