如何执行TFS相当于“撤消挂起的更改”

时间:2011-11-03 17:27:29

标签: git version-control undo

如何在一个或多个文件上执行Git中的TFS'撤消待定更改'的等价物?

这基本上意味着要做这些步骤:

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

如果您已经(1)只是在磁盘上更改它而不添加,那么在执行此操作的命令中知道差异(如果有的话)会很好,但是当你've (2)完成了add-command 和奖励,(3)即使你提交了更改

4 个答案:

答案 0 :(得分:34)

对于1和2,您需要做的就是:

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

这会抛弃任何变化。如果您使用reset,请务必小心。通过重置和检出来了解操作索引以及硬,软和混合选项的排列。该进度书详细解释了这一点: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/

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

git checkout HEAD -- <a list of files>

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

git reflog

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

git reset --hard HEAD@{1}

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

要添加,如果要删除忽略的文件和未跟踪的文件,可以使用此方法擦除:

git clean -xdf

答案 1 :(得分:5)

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

git reset --hard

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

git reset --hard HEAD

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

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

答案 2 :(得分:2)

  1. git checkout [path]或(整个回购)git reset --hard HEAD
  2. git reset [path]后跟git checkout [path]
  3. git reset --hard [commit]恢复[commit]的仓库状态,该状态必须为tree-ish

答案 3 :(得分:0)

我在Git with Eclipse中等同于TFS undo只需右键单击该文件并选择Replace with - &gt; HEAD Revision(或您喜欢的任何版本)。