git远程仓库回退

(一)退回到某个commit -- reset

1. git log (找到你想要回退的版本id,将它复制下来)

 

2. git reset --hard 版本id (本地回退到目标版本)

 

3.git push --force (推送到远程仓库,实现回退)

 

 

 

(二)只想让以前某个commit的代码回退,而在它之后的代码都不回退 -- revert

 

1. git log (找到你想要删除的版本id,将它复制下来)

 

2. git revert 版本id (本地回退到目标版本)

 

3.git push --force (推送到远程仓库,实现回退)

 

(三)推荐使用revert进行远程仓库回退

reset与revert最大的区别在于:revert是新提交一个commit来撤回代码,而reset只是回到某个版本的代码commit

虽然两者都能回退到你想要的代码,但是对于远程仓库,当使用reset回退,其他同事的代码pull release拉最新代码,拉取到的结果并不会回退你的代码,因为pull是fetch与merge的结果,对于已有的commit进行merge是没有效果的。

而revert是新的commit,此时merge新的commit就能回退到你的代码

 

(四)进行远程分支push --force时需要进行备份再push

git branch backup

 

 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

场景

提测的代码(已合入release),决定暂时不上生产,需要回退远程仓库的代码

举例如下:B与D的代码需要回退,A为线上版本,C为其他同事提交的代码

 

 

对一个文件新增b,c,d的三个修改,分别提交

 

 

目标是回退BD剩下AC

 

 

 

回退远程仓库代码的五种途径

2.1 手工修改最新版本代码

直接从最新的版本修改代码,修改到我们想要版本,然后再提交上去,也就是手工回退。在这个例子中就是直接删除‘bd’后提交

 

 

 

手工改代码很容易出错

(1)     没有回退所有需要回退的代码

(2)     删除了不需要回退的代码

 

2.2 本地仓库reset后强推到远程仓库,其他同事需手动reset

存在问题:

(1)     需要回退的代码夹杂了其他同事的commit,直接reset会把其他同事的代码也删除掉

 

 

(2) 远程仓库后退后,需要其他同事未回退的同事手动reset它们的本地仓库,否则其他同事提交会把删除的代码再次提交上去

 

 

 

 

 

2.3 拷贝release,远程仓库删除release分支后再覆盖

与2.2 reset相似:

从要删除的版本的前一个版本拉一个拷贝分支,然后在远程仓库删掉release分支,再将拷贝分支推到远程release。

存在问题:需要让其他同事(本地版本领先于回退后的远程仓库版本)重拉项目或回退

 

2.4本地仓库revert后强推到远程仓库

Revert作用是消除一个commit,它的原理是新建一个commit反向修改目标commit

Revert与reset最主要的区别:revert是去除一个commit,reset是回到某个版本

 

 

 

对于此场景适用revert,我们只要把B与D的提交revert掉,就能达到目的

 

 

Revert实现的回退,不需要其他同事重拉项目或者手动回退项目

 

 

 

2.5 在gitlab上执行revert

需要注意的是在gitlab上revert,必须是无冲突的时候才成功,在此场景下有冲突就失败了

 

 

总结

(1)    回到某个版本,使用reset;消除某个commit,使用revert

(2)     使用git reset实现回退到某个版本,需要让其他同事也回退或者重拉项目

(3)     Revert有可能要手动处理冲突,reset没有这个问题

(4)     对release分支使用git push –force(强制推送)有风险,应该进行备份;或者对自己的分支进行revert,然后提merge request合并到release

(5)     如果没有revert冲突,建议在gitlab上执行revert

全部评论

相关推荐

工作基本定了,比较满意。这深度学习真是难搞啊,论文看不懂,代码看不懂,不会改,创新点??? 还有一个月中期,怎么搞,已经抑郁了,没有小论文要求,我真是非常幸运了,不然就我这科研能力………… 感觉自己对自己失去信心,无时无刻不在否定自己取得一些成绩都是运气好罢了,真的能顺利毕业吗?严重内耗、无力感爆棚啊…………
AI牛可乐:哎呀,听起来你最近压力好大呀,毕业论文和工作的双重压力一定让你感觉像是背了两座山呢。深度学习确实挺复杂的,就像是要在一片迷雾中找到出路一样。但是,你已经很棒了,工作都定好了,这是很大的成就呢! 论文的事情,别太担心。每个人都有看不懂代码和论文的时候,这是正常的。至于创新点嘛,有时候灵感就像小猫一样,需要一点一点地哄出来的。你可以先试试把你看过的资料整理一下,说不定就能找到新的思路呢。 中期答辩前,你可以列个计划,一步一步来,把大问题分解成小问题,一点一点克服。记得,你不是一个人在战斗,你的导师、同学都是你的战友哦。 至于信心嘛,别否定自己,每个人都会有低谷的时候。你已经取得的成绩,都是你实力的体现。毕业不是问题,只要你不放弃,就一定能顺利走过去的。加油哦,我相信你可以的! 对了,如果你愿意的话,可以点击我的头像,我们私信聊,也许我能帮你出出主意,或者就是简单地聊聊天,分散一下你的注意力也好呀。🐮💪🌟
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务