git撤消所有未提交或未保存的更改

我试图撤消自上次提交以来所做的所有更改。 我试过git reset --hard and git reset --hard HEAD在查看这篇文章后 。 我现在回应的头是18c3773 …但是当我看到我的本地源时,所有的文件仍然存在。 我错过了什么?

  • 这将取消您可能使用git add所有文件:

     git reset 
  • 这将恢复所有本地未提交的更改(应在回购根目录中执行):

     git checkout . 

    您还可以将未提交的更改仅还原到特定的文件或目录:

     git checkout [some_dir|file.txt] 

    还有另一种方法来恢复所有未提交的更改(更长的input,但从任何子目录中工作):

     git reset --hard HEAD 
  • 这将删除所有本地未跟踪的文件,所以只有 git跟踪的文件仍然存在:

     git clean -fdx 

    警告: -x也将删除所有被忽略的文件!


总结一下:执行下面的命令基本上等同于原始来源的新鲜git clone (但它不会重新下载任何东西,所以更快):

 git reset git checkout . git clean -fdx 

典型的用法是在构build脚本中,当你必须确保你的树是绝对干净的 – 没有任何修改或者本地创build的目标文件或者构build工件,并且你想让它工作得非常快,每一次克隆整个资源库。

如果您想“ 撤消 ”所有未提交的更改,只需运行:

 git stash git stash drop 

如果您有任何未跟踪的文件(通过运行git status检查),则可以通过运行以下命令来删除这些文件:

 git clean -fdx 

git stash创build一个新的隐藏将变成隐藏@ {0} 。 如果你想先检查你可以运行git stash list来查看你的git stash list 。 它看起来像这样:

 stash@{0}: WIP on rails-4: 66c8407 remove forem residuals stash@{1}: WIP on master: 2b8f269 Map qualifications stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders stash@{3}: WIP on blogit: c9bd270 some changes 

每个存储都以前一个提交消息命名。

还有git stash – “ git stash ”你的本地变化,可以在以后重新申请,如果不再需要,

更多信息存储

我正在使用源代码树….您可以通过2个简单的步骤恢复所有未提交的更改:

1)只需要重置工作区文件状态

在这里输入图像说明 2)select所有未启动的文件(命令+ a),右键单击并select删除

在这里输入图像说明

这很简单:D

对于那些到达这里search是否可以撤销git clean -f -d ,在eclipse中创build的文件被删除,

您可以使用“从本地历史logging中恢复”的方式从用户界面执行相同的操作: 从本地历史logging中恢复

基于我的研究,我有以下的总结。

国家从一个承诺向新的承诺过渡

 0. last commit,ie HEAD commit 1. Working tree changes, file/directory deletion,adding,modification. 2. The changes are staged in index 3. Staged changes are committed 

行动为状态转换:

 0->1: manual file/directory operation 1->2: git add . 2->3: git commit -m "xxx" 

检查差异:

 0->1: git diff 0->2: git diff --cached 0->1, and 0->2: git diff HEAD last last commit->last commit: git diff HEAD^ HEAD 

回到最后的承诺:

 2->1: git reset 1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories) 1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories) 2->1, and 1->0: git reset --hard HEAD 

Git克隆的等效,无需重新下载任何东西

 git reset; git checkout .; git clean -fdx