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

0x9*_*x90 5 git

偶然地,我做了git checkout -- .,失去了一个星期的工作。我试过了git reflog,但是没有一个标记点​​,它消除了我没有标记的更改。

是否可以撤消git checkout -- .(git checkout双破折号)

使用git对象恢复这些东西怎么办?git是否会为存储库拍摄快照,即使没有快照也是如此git commit

LeG*_*GEC 0

不幸的是:如果你想检索你的文件,你的文件内容必须以某种方式登陆 git。

git checkout -- .是少数破坏性命令之一(与git reset --hard和一起git clean -f),它可以从磁盘中删除内容,而无需事先将其存储在 git 中。

所以仅靠 git 无法帮助你;您必须求助于 IDE 的历史记录或文件恢复实用程序。


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

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