不慎在错误的目录执行了git checkout -- .,导致最近的更改都被恢复成commit时的状态。 是否有命令可以找回丢失的更改呢?
git checkout -- .
光阴似箭催人老,日月如移越少年。
被添加到 index 的内容可以找回(但是只有文件内容,没有文件名信息,需要人工辨别),没有被添加的部分已经被删除了,你只能求助于另外的办法(备份文件、反删除恢复等)。
据我说知,如果没有stage那些更改,你就不能恢复了。
如果stage(add)过,还可能可以恢复(前提是不能运行git gc): 使用 git fsck --lost-found 找到 dangling blob,然后使用 git show <sha_id> 看看这个文件是不是你之前被恢复的。
git fsck --lost-found
dangling blob
git show <sha_id>
git reset --hard HEAD~1 就可以恢复了
git reset --hard HEAD~1
被添加到 index 的内容可以找回(但是只有文件内容,没有文件名信息,需要人工辨别),没有被添加的部分已经被删除了,你只能求助于另外的办法(备份文件、反删除恢复等)。
据我说知,如果没有stage那些更改,你就不能恢复了。
如果stage(add)过,还可能可以恢复(前提是不能运行git gc): 使用
git fsck --lost-found
找到dangling blob
,然后使用git show <sha_id>
看看这个文件是不是你之前被恢复的。git reset --hard HEAD~1
就可以恢复了