likes
comments
collection
share

代码被revert,你pull了master,代码没了,咋找回来?

作者站长头像
站长
· 阅读数 5

问题场景

实际工作中,在上线时,你的新功能代码都是在gitlab上提交merge to master的请求,拥有merge权限的领导通过后,你的代码才合到master。好,QA开始上线了你的代码,这时 啪,啪,报警了,代码有问题。领导revert了你的代码以保证master分支的正确。这时,你的分支pull了master后,你发现你分支上的新功能代码都没有了!!咋找回来

本文从实战角度来解决这个问题

条件

  1. 假设你已经有了一个git项目: test-git,并且有两个分支: master,test

实战

test分支,你创建了一个文件welcome,文本:hi git。并git commit -m '测试git revert'提交

当前,master,test分支的内容分别如下

~/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
~/tt/test-git>>test $ 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
-rw-r--r--  1 tt  staff     7B  8  1 20:19 welcome

~/tt/test-git>>test $ cat welcome
hi git

现在,向master提交merge to master请求,如下图 代码被revert,你pull了master,代码没了,咋找回来?

领导merge后开始上线,假设线上出现问题,领导revert了这次提交的代码。如下图 代码被revert,你pull了master,代码没了,咋找回来?

接着你要查看问题,所以你会本地操作,回到你的代码分支,执行git merge origin/master

~/tt/test-git>>test $ git merge origin/master
Updating 670adc2..d3961f7
Fast-forward
 welcome | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 welcome
~/tt/test-git>>test $ ll
total 8
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

此时,你发现你提交的代码没有了。welcome文件不见了,咋办

咋找回来这些代码呢?下面开始找回操作

  1. git log找到领导revert你代码的那个commit id,这里commit id50a06845da879ab76e6fdd55dce923826742dcb2。如下图三个commit的说明 代码被revert,你pull了master,代码没了,咋找回来?

  2. git revert --no-commit 50a06845da879ab76e6fdd55dce923826742dcb2

代码被revert,你pull了master,代码没了,咋找回来? 你的代码已经回来了,然后就没有然后了,简单吧

总结

找到领导revert你代码的commit id,然后git revert --no-commit commit id

一句话总结:把之前revert的那条commitrevert一下

转载自:https://juejin.cn/post/6856039543628693517
评论
请登录