【问题标题】:How to perform the TFS-equivalent of 'Undo pending changes'如何执行“撤消挂起的更改”的 TFS 等效项
【发布时间】:2011-12-21 09:43:49
【问题描述】:

如何在 Git 中对一个或多个文件执行等效的 TFS“撤消挂起的更改”?

这基本上意味着执行以下步骤:

  • 撤消磁盘上的更改
  • 重置 Git 发现的所有更改
  • 从 Git 获取文件的最新更改

如果您(1) 只是在磁盘上更改它而不添加它,那么最好知道执行此操作的命令中的差异(如果有的话),而且当您've (2) 完成了添加命令,并且获得奖励,(3) 即使您提交了更改

【问题讨论】:

    标签: git version-control undo


    【解决方案1】:

    对于 1 和 2,您只需:

     git stash -u #same effect as git reset --hard, but can be undone
    

    这将丢弃任何更改。如果您使用reset,请小心。阅读有关使用重置和结帐操作索引和硬、软和混合选项的排列的信息。 progit 书详细解释了这一点:http://progit.org/2011/07/11/reset.html

    对于 3,

     git reset --hard HEAD^
    

    但最好在此之前发出git stash -u - 以防万一您有待处理的更改。

    这会将当前分支重置为当前提交的父级。在线查找“tree-ish”。引用后的 ^ 和 ~N 将允许您指向该引用历史中的任何可到达点。要了解 git 中如何跟踪历史,《计算机科学家的 Git》很好地解释了有向无环图:http://eagain.net/articles/git-for-computer-scientists/

    要从当前提交的状态中获取单个文件(即丢弃更改),您可以使用 checkout

    git checkout HEAD -- <a list of files>
    

    如果您错误地发出了上面的最后一个重置命令,那么您并没有遇到麻烦。 Git 会跟踪分支过去在 reflog 中指向的位置。

    git reflog
    

    会列出你的历史。您可以在该输出中看到如何引用每个,所以:

    git reset --hard HEAD@{1}
    

    会将分支重置为之前进行 1 次更改的位置。

    添加,如果你想擦除被忽略的文件和未跟踪的文件,你可以用这个来擦除:

    git clean -xdf
    

    【讨论】:

    • 小心; git 不会通过漂亮的(令人讨厌的?)对话框提示您选择要撤消待处理更改的已更改文件。 :)
    • 一种方法是添加 -p 参数,该参数会提示您进行每一块更改。你可以说ad 来处理整个文件,而不是yn 来处理个别大块头。
    【解决方案2】:

    此命令将撤消本地更改并将其恢复到存储库中的当前版本:

    git reset --hard
    

    您可以通过发出以下命令恢复到上次有效提交:

    git reset --hard HEAD
    

    如果您只想恢复一个文件,请改用 git checkout:

    git checkout -- file_name.extension
    git checkout HEAD file_name.extension
    

    【讨论】:

    • 为什么要区分git reset --hardgit reset --hard HEAD
    【解决方案3】:
    1. git checkout [path] 或(整个回购)git reset --hard HEAD
    2. git reset [path] 后跟 git checkout [path]
    3. git reset --hard [commit] 恢复[commit] 的r​​epo 状态,它必须是tree-ish

    【讨论】:

      【解决方案4】:

      在带有 Eclipse 的 Git 中,我相当于 TFS undo,只需右键单击该文件并选择 Replace with -> HEAD Revision(或您想要的任何版本)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-05
        • 2018-03-21
        • 2016-04-20
        • 2014-09-12
        • 2017-03-20
        • 1970-01-01
        相关资源
        最近更新 更多