git

通过git找回丢失的代码

Posted by czr on May 30, 2018

由来

git checkout 切换引发的两个血案

问题

问题1 切换新的分支跟踪代码问题

问题1是由于疏忽引起的,主要是在切换代码新分支的时候没有跟踪主分支

  git checkout -b feature#test

上面的命令没有使用 -t 来追踪指定的分支,默认是以当前分支代码为准,也就是说我新切换的分支里面带了我现在分支的代码,然后在主分支合并新分支的时候就带上了当前分支的代码,导致后台代码编译报错。

问题1解决

每次checkout -b 新分支的时候一定要指定跟踪分支
每次checkout -b 新分支的时候一定要指定跟踪分支
每次checkout -b 新分支的时候一定要指定跟踪分支

问题2 切换新的分支丢失代码问题

还是checkout到别的分支的时候,由于当前分支内有提交代码,连缓冲区也没有添加(一般这样切换分支是会报错的才对)然后切换回原来的分支的时候发现所有的代码都丢失了!连git status都是很干净的,git log显示是上一个commit,还以为就要重新写了

问题2解决

网上发现了一个命令 git reflog git reflog 这里会显示当前分支的一些操作记录,前面的黄色HASH就是版本号,找到丢失代码的操作记录号,先建立一个新的分支,通过回退命令git reset –hard HEAD回退到丢失代码前的版本

总结

git还是很强大的,默默帮我们做了很多记录操作。假如连.git里面的记录文件都删除,git reflog也找不到了,所以合理的利用git命令和每次重要操作都细心可以提高我们的开发效率


Creative Commons License
This work is licensed under a CC A-S 4.0 International License.