所有沒有 commit 的本地改動,都會隨着 reset --hard 丟掉,無法恢復。
如果只是想回到 pull 之前當前分支所在的commit位置,則可以。比方說你在 master 分支上,可以用 git reflog master 查看 master 分支歷史變動記錄,其中應該有一個就是你 pull 之前的那個commit, 你可以用 git reset --hard <COMMIT_ID> 來恢復。比如下面的,假定你 pull 之前處在 xxxxxx 那個位置,那么可以用 git reset --hard master@{1} 恢復。 但是無論如何,沒有commit並被 git reset --hard 清掉的本地改動是無法通過git恢復的。
$ git reflog master 3b4946a master@{0}: merge origin/master 9187e70 master@{1}: xxxxxxx 3b4946a master@{2}: yyyyyyy