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