前天辛苦用了一天时间,写完关键代码后。用 git 提交,由于修改的东东较多,用一个文件保存了修改的注释,用于 git commit -F commit.txt 。由于是在 windows 平台,所以这个文件是用的 gbk 编码。所以提交后,用 git log 查看日志时,出现乱码。此时就想用 git rebase -i HEAD~1 来修改注释。在选择命令时,用了 x ,进行命令行后,我直接 git commit -F commit.txt.。导致刚才的提交丢失。所以得恢复刚才的提交。
git 中有命令: git fsck --lost-found
可以查到丢失的。由于项目有段时间了,所以找到了一千多条记录。要在这一千条记录中找到我刚才丢失的那条可真不容易。所以此法不通。
于是,我浏览 .git 目录,发现里面有个 logs 目录,查看 HEAD,居然能看到刚才提交操作的日志,把那个版本号 git show,就是刚才提交的类容。
再把 .git/refs/heads/master 中的内容改成刚才的版本号,保存。再 git log。哈哈。。。刚才丢失的类容找回来了。
刚才在写这篇文章时,又百度了一把(天朝屏蔽了google,百度要用时不给力,不用时,却跑出来),发现 git 中有 git reflog 命令,能查看所有的操作日志。用 git cherry-pick 来进行恢复。比我前天的操作方法要安全。
原文地址:http://blog.csdn.net/kl222/article/details/34834245