在主分支上签出文件后,Git分支编辑丢失

时间:2019-06-29 14:37:56

标签: git

有什么想法如何恢复我在下面的第2步中所做的更改?

  1. Git结帐新分支foo
  2. 对foo.txt进行了一些更改
  3. 保存foo.txt(虽然没有提交)
  4. 将Google Checkout退回分支机构主管
  5. Git结帐文件foo.txt
  6. 对foo.txt进行了一些更改
  7. 保存foo.txt(不提交)
  8. git checkout返回分支foo
  9. 步骤2中foo.txt中的所有更改均已消失

1 个答案:

答案 0 :(得分:3)

如果您在更改后在该文件上运行git add,则该内容已注册在.git中-该文件存在于此并且可以检索。尽管不容易-您必须先查找Git创建的所有最新对象:

find .git/objects/ -type f -printf "%T+\t%p\n" | sort

这些按修改日期排序,因此最后一个是最近创建的。继续前进-遍历每个对象并运行以下命令,直到找到您的内容为止:

git cat-file -p [40 letter hash including 2-letter directory name]

其中一些对象不是文件,而是树(目录)和提交,请跳过它们。

如果您没有运行 git add,则Git根本不了解该文件,因此您无法要求Git取回文件。