是否可以撤消`git checkout - .`来检索未经标记的更改

时间:2017-08-17 03:58:32

标签: git

无意中,我做了git checkout -- .并且失去了一周的工作。我试过了git reflog,但是没有一个参考点,我已经消除了无关紧要的变化。

是否可以撤消git checkout -- .(git checkout double dash)

使用git对象恢复这些东西怎么样?即使没有git commit,git也能获取存储库的快照吗?

1 个答案:

答案 0 :(得分:0)

不幸的是:如果要检索文件,文件的内容必须以某种方式进入git。

git checkout -- .是为数不多的破坏性命令之一(以及git reset --hardgit clean -f),它们可以从磁盘上删除内容而无需事先将其存储在git中。

所以单独使用git并不能帮助您;您将不得不使用IDE的历史记录或文件恢复实用程序。


为便于记录,以下是一些以某种方式在您的存储库中“存储内容”的操作:

  • git commit,显然...
  • git stash:此命令实际上创建完整的提交,您创建的最后一个不会过期,先前的存储将根据reflog到期规则而过期(默认保留时间为30天,请参见git gc的帮助)
  • git add [file](即使不运行git commit):这会将文件的内容写入git数据库中的某个位置;该文件不会与它的 name 一起存储,但是您可以采取一些技巧来按文件内容扫描文件(以git的说法blob)。 “松散文件”的默认保留期为2周(请参见git gc的帮助)