如果在使用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