美文网首页
一次使用git的惨痛教训

一次使用git的惨痛教训

作者: 钱学敏 | 来源:发表于2018-09-16 10:29 被阅读0次

    问题1

    本地文件有a.js、b.js、node_modules
    执行git add .后发现没有把node_modules添加忽略,于是撤销

    git init 
    git add .
    git reset --hard
    

    因为git没有提交, 不小心git reset --hard,工作区代码全没了

    解决办法:

    git fsck --lost-found  //找回git add过但是已经不存在文件中的内容
    

    然后到这个路径下找回

    .git/lost-found/other
    

    https://www.cnblogs.com/hope-markup/p/6683522.html
    如果你没有commit你的本地修改(甚至于你都没有通过git add追踪过这些文件,当他们被删除,git reset --hard对于这些没有被commit过也没有git add过的修改来说就是具有毁灭性的
    but,如果你幸运的是曾经通过git add命令追踪过这些文件,只是没有commit它们而已!那么试试git fsck --lost-found这个命令吧!然后你就可以在本地项目文件中路径为.git/lost-found/other中找到它们!!并且呢,这里面包含了所有的没有被commit(指定到某次commit)的文件,甚至可能还包括你每次git add的版本(version一词实在不知道在这里怎么翻译,姑且就认为是版本吧)!
    使用git fsck --lost-found这个命令,通过.git/lost-found/other这个路径,你可以恢复任何你git add过的文件!再通过find .git/objects -type f | xargs ls -lt | sed 60q这个命令,你就可以找到最近被你add到本地仓库的60个文件
    当然咯,如果你没有git add过的文件呢,被git reset --hard这个命令整过之后呢,就如你自己执行delete命令一样,再也尸骨难寻啦(也就是真的毛都不剩了!!默哀三秒)!!!!

    http://www.360doc.com/content/16/0219/11/10058718_535692779.shtml

    git cat-file -p ID > a.md
    

    问题2

    恢复误删除的git stash记录 (how to retrieve a deleted git stash)
    1.场景:使用git stash或者sourcetree贮藏了工作现场,然后被误删除了这个stash
    2.恢复方法
    a.首先使用git fsck --unreachable命令查找所有unreachable记录,记录的样子大概是这样子的:

    unreachable commit 3cf816eeb0dc339513c63dd041e5f4efc6241e24
    unreachable commit f318453870754947fe46cf5dfd022bdf33f9c3fd
    unreachable blob 5899fee2b9250f6736c256cb88e4c48a6c7f730f
    b.第二步,使用git show +<sha>命令会查找你需要恢复的那一条工作现场,sha是上面的key,我们恢复的时候只能恢复unreachable commit 开头的记录,unreach blob是不能用git statsh apply+<sha>来恢复的,会报not a stash-like commit 错误

    c.使用git stash apply +<你找到的那条记录的key>恢复即可。

    相关文章

      网友评论

          本文标题:一次使用git的惨痛教训

          本文链接:https://www.haomeiwen.com/subject/trpxnftx.html