git两次暂存文件,能恢复旧版本吗?

git staged file twice, can you recover the old version?

如果我更改 file.txt

然后git add file.txt

那我再改成file.txt

然后我再做一次git add file.txt

我意识到我在第二次 changes/edit 文件时犯了一个错误。你能回到我最初暂存的文件版本吗?

正如 J. Titus 在评论中所说:

You never committed to produce a reference, so no.

是的,理论上对象仍处于 .git/objects 直到下一次 git gc 是 运行(在某些其他操作后自动发生)。

不幸的是,找出哪个对象可能很棘手。如果文件是最近编辑和添加的,那么时间戳会有所帮助。

ls -lrt .git/objects/*/* | tail
-r--r--r-- 1 ams users     6976 Apr  6 19:53 .git/objects/0c/3546bd9101264cd6a9fb1fb54cea04c6e0a4b8

如果您看到一个文件可能带有时间戳,那么您可以像这样检索内容:

git show 0c3546bd9101264cd6a9fb1fb54cea04c6e0a4b8