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

Seb*_*son 33 git version-control undo

如何在一个或多个文件上执行Git中的TFS"撤消挂起更改"的等效操作?

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

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

如果您(1)只是在磁盘上更改它而不添加它,而且当您(2)完成add-command时,最好知道执行此操作的命令中的差异(如果有)并获得奖金,(3)即使您已经提交了更改.

Ada*_*ruk 34

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

 git stash -u #same effect as git reset --hard, but can be undone
Run Code Online (Sandbox Code Playgroud)

这将丢掉任何变化.如果使用,请小心reset.通过重置和检出来了解操作索引以及硬,软和混合选项的排列.该进度书详细解释了这一点:http://progit.org/2011/07/11/reset.html

对于3,

 git reset --hard HEAD^
Run Code Online (Sandbox Code Playgroud)

但最好git stash -u在此之前发布 - 以防万一您有待更改.

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

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

git checkout HEAD -- <a list of files>
Run Code Online (Sandbox Code Playgroud)

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

git reflog
Run Code Online (Sandbox Code Playgroud)

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

git reset --hard HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

将分支重置为以前更改为1的位置.

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

git clean -xdf
Run Code Online (Sandbox Code Playgroud)


Man*_*anu 5

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

git reset --hard
Run Code Online (Sandbox Code Playgroud)

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

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

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

git checkout -- file_name.extension
git checkout HEAD file_name.extension
Run Code Online (Sandbox Code Playgroud)

  • 为什么要区分`git reset --hard`和`git reset --hard HEAD`? (3认同)