Git 是一个非常强大的工具,强大的力量伴随着巨大的责任。如果没有正确使用和处理,它可能会导致您丢失提交。在某些情况下,您可能会立即发现所有工作都丢失了。
如果您定期提交工作,则有一种方法可以恢复这些丢失的提交。
本教程旨在使用
git reflog
和
git cherry-pick
在 Git 中恢复丢失提交的命令。
Note: Using the reflog will only work for a certain amount of time after the commits are lost. Git cleans the reflog periodically, so don’t wait too long!
程序
恢复丢失提交的第一步是恢复之前在存储库上完成的所有提交和操作的列表。
Note: Keep in mind that the given commit hashes and signatures may differ from that of your local repository. Replace all relevant information with the info corresponding to your log.
运行这个命令
git reflog
运行命令后,这就是您将看到的输出。
$ git reflog
c9f9669 HEAD@{0}: commit: Fixed test cases to run on Unix
b3ca8a4 HEAD@{1}: pull: Fast-forward
54ba188 HEAD@{2}: pull origin master: Fast-forward
e659a21 HEAD@{3}: reset: moving to HEAD~1
12944d8 HEAD@{4}: reset: moving to HEAD~1
6f40152 HEAD@{5}: reset: moving to HEAD~1
3de61ba HEAD@{6}: pull: Fast-forward
e659a21 HEAD@{7}: reset: moving to HEAD^1
12944d8 HEAD@{8}: reset: moving to HEAD^1
6f40152 HEAD@{9}: reset: moving to HEAD^1
3de61ba HEAD@{10}: commit: Removed Query object
6f40152 HEAD@{11}: pull: Merge made by the 'recursive' strategy.
12944d8 HEAD@{12}: commit: API touchups --- We want to recover this commit.
e659a21 HEAD@{13}: commit: Test enhancements
07419e1 HEAD@{14}: pull: Fast-forward
查找要恢复的提交的哈希,例如12944d8 。
现在使用以下命令恢复丢失的提交。
git cherry-pick 12944d8
恢复提交
而已!使用以下成功命令应该很快可以恢复您的工作:
Finished one cherry-pick.
[master 12944d8] API touchups
3 files changed, 36 insertions(+), 3 deletions(-)
如果发生合并冲突
如果存在合并冲突,则会显示以下消息。
error: could not apply 12944d8... API touchups
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add ' or 'git rm '
hint: and commit the result with 'git commit'
使用git status命令可以帮助您确定必须完成的工作。