2019-11-21 -- git 恢复文件

如果在使用git时,遇到这种情况:本地的更改未提交到仓库,在此时你执行了git reset、git rebase或git stash pop等操作,可能会导致本地的更改消失!或者有意或无意将文件彻底删除,后面又想再恢复回来。心里肯定骂把自己一万遍。

但是这种情况仍有办法补救,帮助自己恢复部分或全部的代码。

情况一:文件没有add

如果你对自己的更改未做git add,这种情况可以借助一些工具,如Eclipse、phpStorm等IDE工具。这类工具通常备有Local History功能,详细记录了文件的每次变动。这种情况并没有用到git,如果你没有使用带有此功能的工具,变动的文件可能无法恢复~

新建一个文件Delete.php,并将其删除。


image.png

查看Local History,可以看到被删除的文件,选择并恢复它!


image.png

Delete.php文件恢复!
image.png

情况二:文件进行过git add,使用git fsck --lost-found命令

一:如果在进行如git reset等命令之前,对文件进行过git add操作但是没有commit:

image.png

1、此时本地的更改已经完全消失了,如果想恢复可以使用命令:git fsck --lost-found


image.png

2、可以看到有一个blob的二进制文件,使用git show进行查看:


image.png

3、果然是已经消失的Delete.php。然后进行文件备份存储:
image.png

此时文件已经恢复!
image.png

二、如果文件进行过commit:

image.png

1、这是可以看到类型从blob变为了commit:
image.png

2、如果类型为tree或commit,则可以使用git merge合并到当前分支!

image.png

参考:

git官方文档
Git-内部原理-维护及数据恢复

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。