问题场景
实际工作中,在上线时,你的新功能代码都是在gitlab上提交merge to master的请求,拥有merge权限的领导通过后,你的代码才合到master。好,QA开始上线了你的代码,这时 啪,啪,报警了,代码有问题。领导revert了你的代码以保证master分支的正确。这时,你的分支pull了master后,你发现你分支上的新功能代码都没有了!!咋找回来
本文从实战角度来解决这个问题
条件
- 假设你已经有了一个git项目: test-git,并且有两个分支: master,test
实战
在test分支,你创建了一个文件welcome,文本:hi git。并git commit -m ‘测试git revert’提交
当前,master,test的内容如下1
2
3~/tt/test-git>>master $ ll
drwxr-xr-x 3 tt staff 96B 5 8 20:54 test
-rw-r--r-- 1 tt staff 16B 8 1 19:55 test3.log
1 | ~/tt/test-git>>test $ ll |
现在,向master提交merge to master请求,如下图
todo
,领导merge后,线上出现问题,领导revert了这次提交的代码。然后回到你的代码分支,执行git merge origin/master
1 | ~/tt/test-git>>test $ git merge origin/master |
此时,你发现你提交的代码没有了,咋找回来呢,下面开始找回操作
- git log找到领导revert你代码的那个commit id,这里commit id是50a06845da879ab76e6fdd55dce923826742dcb2
- git revert –no-commit 50a06845da879ab76e6fdd55dce923826742dcb2
然后就没有然后了,你的代码已经回来了。简单吧
总结
找到领导revert你代码的commit id,然后git revert –no-commit commit id
一句话总结:把之前revert的那条commit再revert一下