如何将未提交的已删除文件(使用plain rm删除)还原到最后一个git commit

时间:2012-02-01 22:54:41

标签: git

我错误地rm -rf我的git存储库中的目录。这些更改未提交,我想恢复此更改并返回到我上次的git提交。

# On branch release-1
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       deleted:    dir/file1
#       [....]

由于文件被删除,我无法做git checkout -- <file>所以我改为git checkout --,但这不起作用。

因此我选择了一条捷径:隐藏了这些变化

$  git stash
Saved working directory and index state WIP on release-1: d2dbff3 removed the CVS $Id lines
Checking out files: 100% (394/394), done.
HEAD is now at d2dbff3 removed the CVS $Id lines

现在一切都好。

我的印象是,藏匿是一种蛮力的方法。是否可以对当前分支checkout执行(整个分支而不提供任何文件)丢弃任何更改?

1 个答案:

答案 0 :(得分:3)

在短期内,您可以使用git stash drop从您的存储中获取多余的条目。将来,您可以使用git checkout HEAD -- dir获取dir的头部提交版本。