今天更新代码发现有冲突,使用的是smartgit桌面软件操作的,在更新同事代码前我的代码commit了,但是因为再次更新代码有冲突,点击了一个rebase(重定基准)按钮后,然后就可以再次更新同事代码了。可是一运行发现自己commit的代码不见了,吓了我一跳,结果经过查资料找到了很好的办法!
方法如下:
1、cd 目标工程目录下,使用git reflog列出最近的git的操作记录(注意:编号越大,操作的时间越久远)
2fc7e63 HEAD@{9}: rebase: checkout origin/trunk
937ce55 HEAD@{10}: rebase finished: returning to refs/heads/trunk
937ce55 HEAD@{11}: rebase: 列表展示
a531a96 HEAD@{12}: rebase: checkout origin/trunk
9a16344 HEAD@{13}: rebase finished: returning to refs/heads/trunk
9a16344 HEAD@{14}: rebase: 列表展示
bb674ac HEAD@{15}: rebase: checkout origin/trunk
c5d0fb5 HEAD@{16}: commit: 列表展示
2、找准你出差错的commitid后,使用 git checkout [commitid] 切换到此节点 。比如 git checkout c5d0fb5就能成功导出一份工程了,代码纹丝不动的都在!这样你就能手动把文件复制到你的目标分支工程。
3、推荐最好的办法是:git cherry-pick [commitid]
首先切换到要提交的分支 如dev
git checkout dev
然后 git cherry-pick [commitid] 就可以了。
大功告成!最后告诫程序猿们遇到代码冲突一定要小心谨慎,要不然重写一遍丢失的代码就难受了!
网友评论