撤消git checkout覆盖未提交的文件

时间:2014-04-09 10:19:15

标签: git git-checkout

我使用命令git checkout - $(git ls-files -m)来撤消某些文件的git rm。但是,我修改了一些其他文件而没有提交它们,这些文件已经恢复到之前的提交,丢失了未提交的更改。

有没有办法让这些变化回来?
我想不到git,因为更改没有添加到git。在Mac上如果有帮助的话。

由于 汤姆

2 个答案:

答案 0 :(得分:0)

  

Does git checkout really silently overwrite uncommitted changes?
  并且答案在2018年仍然是“是”(刚刚在2.11上进行了测试)

确实是在2019年8月发布的Git 2.23,除了现在有更多explicit git restore command

一个简单的git restore .也会从索引内容中静默恢复工作树(因此,如果文件被修改但未添加到该索引中,它们的更改仍然会丢失)

但是至少有no confusion possible between checkout of files and of branch

答案 1 :(得分:0)

默认情况下,您无法将其取回,但是在这种紧急情况下,您可能会很幸运,并且能够通过以下方式检索git checkout filename意外破坏的文件:

  • 您可能仍然在文本编辑器中缓冲了文件(对我来说, 在我的BBEdit文本编辑器中发现,如果打开它,我可以做一个
    undo来取回文件(因为它倾向于加载到
    当前版本(如果磁盘上的文件已更改),然后保存。
  • 如果您连续运行备份,也许还可以 取回您编辑的版本。例如Apple Time Machine可能
    不久前就有一个版本。