混帐撤消所有未提交或未保存的变化(git undo all uncommitted or unsav

2019-07-17 16:18发布

我试图取消所有更改,自从我上次提交。 我试过git reset --hardgit reset --hard HEAD观看后这个职位 。 我回应头现在是18c3773 ...但是,当我看着我的本地源中的所有文件仍然存在。 我在想什么?

Answer 1:

  • 这将unstage你可能已经采用分级的所有文件git add

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

     git checkout . 

    您也可以恢复未提交的更改只是特定文件或目录:

     git checkout [some_dir|file.txt] 

    另一种方法来恢复所有提交的修改(再输入,但任何子目录作品):

     git reset --hard HEAD 
  • 这将删除所有本地未跟踪文件,所以唯一的Git跟踪的文件保留:

     git clean -fdx 

    警告: -x也将删除所有被忽略的文件,包括那些指定.gitignore ! 您可能需要使用-n的文件的预览将被删除。


概括起来:下面执行命令基本上等同于新鲜git clone从原始来源(但它不会重新下载任何东西,因此要快得多):

git reset
git checkout .
git clean -fdx

这个典型用法是在构建脚本,当你必须确保你的树是绝对干净的 - 没有任何修改或本地创建的目标文件或建立文物,并且要使其工作非常快,不重新克隆整个仓库每一次。



Answer 2:

如果要“ 撤销 ”的所有未提交的更改,只需运行:

git stash
git stash drop

如果您有任何未跟踪文件(通过运行检查git status ),这些可以通过运行将其删除:

git clean -fdx

git stash创建一个新的存储将成为藏匿@ {0}。 如果你想先检查你可以运行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

每一个藏匿在先前提交讯息话题而得名。



Answer 3:

还有git stash -这“藏匿”你的本地修改,并且可以在稍后的时间重新应用或丢弃,如果不再需要

更多关于积攒信息



Answer 4:

我使用的源代码树....你可以做恢复用两个简单的步骤所有提交的修改:

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

2)选择所有文件unstage(命令+ A),右键单击并选择删除

就这么简单:d



Answer 5:

对于那些谁达到在这里寻找他们是否可以撤消git clean -f -d ,通过在Eclipse中创建的文件已被删除,

您可以使用“本地历史还原”的裁判从UI做同样的: 从当地的历史还原



Answer 6:

美国从一个过渡承诺的新承诺

0. last commit,i.e. 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"

检查DIFF

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 reset; git checkout .; git clean -fdx


文章来源: git undo all uncommitted or unsaved changes