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
如果我更改 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