repo操作导致代码消失一例解决方法

    有一次整理了下代码后准备提交,进行了git add和git commit操作后,害怕服务器上的代码又更新了,就repo sync了一下,再git log,发现刚才的commit没有了,之前在repo init时也有使用-m参数指定使用相应的mainfest.xml文件,也使用过repo status查看过相应的branch情况,但最终还是没有相应的commit log信息,头痛啊,一周的工作就要白费了吗?不甘心啊,不停的使用git branch -a和git checkout来切换分支,还是没有相应的提交,不可能所有的分支都没有吧?于是上网查找了下,发现刚才commit时有可能是在(no branch)上进行操作的,使用git reflog就可以查看到刚才的提交信息了,接下来再使用git checkout切换到相应的分支,然后再使用git merge命令将刚才reflog看到的相应commit合并过来,再push下就可以了,总的步骤如下:
    git reflog
    git checkout ourbranch
    git merge commitID
    git push
    就这样,把我一周的工作找回来了,再进行了一遍repo init和repo sync操作,发现默认是在(no branch)上的,即执行git branch -a时有如下返回:
    * (no branch)
    remotes/origin/master
    remotes/origin/pre-release
    remotes/origin/release
    remotes/origin/top
    终于把问题型清楚了,切记以后使用repo时要切换分支啊,没想到首次使用repo来管理提交代码(以前只是从google上下载android源码而已)就碰到这么严重问题,还好放松后好好想了一下和查查资料,避免一周工作白费,还有一点以后使用新工具时还要记得备份,避免在紧急情况下找不到解决方法时应急啊。
    参考网址:http://blog.csdn.net/huangxiaohu_coder/article/details/6782260

评论

此博客中的热门博文

I/O映射之I/O端口

通过Netlink检测网线插拔

使用seq_file