有什么想法恢复我在下面步骤2中所做的更改?
- GIT结帐新分支Foo
- 对foo.txt进行了一些更改
- 保存foo.txt(虽然没有提交(
- git结帐回到分支机构
- git Checkout文件foo.txt
- 对foo.txt进行了一些更改
- 保存foo.txt(no commit(
- Git Back Back Branch Foo
- 步骤#2的foo.txt中的所有更改都消失了
如果更改该文件后在该文件上运行git add
,则内容已在.git
中注册 - 它在那里存在,可以检索。虽然不容易 - 您必须首先找到Git创建的所有最新对象:
find .git/objects/ -type f -printf "%T+t%pn" | sort
这些是通过修改日期对其进行排序的,因此最近创建了最后一个。向上走 - 遍历每个对象并运行此命令,直到找到内容:
git cat-file -p [40 letter hash including 2-letter directory name]
其中一些对象不是文件,而是树(目录(并提交,跳过它们。
如果您不运行 git add
,则Git根本不知道该文件,因此您不能要求Git回收文件。