我错误地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
执行(整个分支而不提供任何文件)丢弃任何更改?
答案 0 :(得分:3)
在短期内,您可以使用git stash drop
从您的存储中获取多余的条目。将来,您可以使用git checkout HEAD -- dir
获取dir的头部提交版本。