我只是tar x
错误地运行而不是运行tar c
,并用几天前的版本覆盖了我的 git 存储库。这将保留我新创建的任何文件,包括.git
.怎样才能尽可能的恢复呢?
答案1
先把整个乱七八糟的东西复制一份,以防万一。
git fsck
将显示悬空对象和提交。找到最新的悬空提交。我将所有提交哈希值提供给gitk
,它仅在顶部显示最新的“最近”哈希值。除了只有几个提交需要处理之外,我也只有一个分支需要恢复——如果有多个头,这会更加复杂。
然后git stash
隐藏当前未提交的更改以供检查。
然后我就能够git reset --hard
获得上面确定的提交哈希值。
git stash pop
也非常干净地合并回来。我想我几乎已经得到了我想要的一切。