如何在Git中对一个或多个文件执行相当于TFS的撤销挂起更改?如何执行TFS等效的'撤消挂起更改'
,基本意思是做下列步骤操作:
- 撤消磁盘上的变化
- 重置任何改变的Git已经发现
- 获取该文件的最新变化,从Git的
它如果你有(1)只是在磁盘上改变它,而不添加它,将很好地知道命令中的差异(如果有的话),但是当你已经做了(2)完成了附加命令和奖金(3)即使你已经提交了更改。
如何在Git中对一个或多个文件执行相当于TFS的撤销挂起更改?如何执行TFS等效的'撤消挂起更改'
,基本意思是做下列步骤操作:
它如果你有(1)只是在磁盘上改变它,而不添加它,将很好地知道命令中的差异(如果有的话),但是当你已经做了(2)完成了附加命令和奖金(3)即使你已经提交了更改。
为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 [email protected]{1}
将重置分支到它曾经是前1个变化。
要添加,如果你想消灭被忽略的文件和未跟踪文件,你可以用这个擦:
git clean -xdf
这个命令将撤消本地更改,并将它们恢复到当前版本的库:
git reset --hard
可以通过发出恢复到您的最后一个有效的提交:
git reset --hard HEAD
我F你只是想恢复只是一个文件,使用git结帐代替:
git checkout -- file_name.extension
git checkout HEAD file_name.extension
你为什么要区分'git reset --hard'和'git reset --hard HEAD'? – manojlds
git checkout [path]
或(整个回购),其次git reset --hard HEAD
git reset [path]
通过git checkout [path]
git reset --hard [commit]
在恢复回购的状态[commit]
,必须是tree-ish我相当于在Git中使用Eclipse的是简单地右键单击该文件并选择Replace with
- >HEAD Revision
(或任何您想要的版本)。
小心; git不会提示你有一个漂亮的(令人烦恼的)对话框来选择你想撤消待处理更改的文件。 :) –
这样做的一种方法是添加-p参数,它将提示您进行每个更改。你可以说'a'或'd'来处理整个文件,而不是'y'或'n'来处理单个的文件。 –