Seb*_*son 33 git version-control undo
如何在一个或多个文件上执行Git中的TFS"撤消挂起更改"的等效操作?
这基本上意味着要做这些步骤:
如果您(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)
此命令将撤消本地更改并将其还原到存储库中的当前版本:
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)