回滚master代码_git高级命令之代码回滚

一、背景

写代码总不可能一帆风顺,一直向前迭代。有时候,我们需要进行回滚到之前的版本。

本文主要介绍git命令如何进行代码回滚。

二、代码回滚相关命令

git命令.png

三、git命令的实际操作演练

1、git log

~/Documents/tag-service$ git log

image.png

2、

~/Documents/tag-service$ git revert e22c03c65ddfe3df412151f26de19f53decec3e7

缺点是:当提交代码的次数多,如果需要回滚的次数多,你需要逐个执行revert。

3、git reset 命令,git log不再出现被回退代码的痕迹。

~/Documents/tag-service$ git log

image.png

-- 8ff4e88d84022f882e79799726eb8b9fb0bbb1a5 是“日志格式统一”的提交点。

~/Documents/tag-service$  git reset --hard 8ff4e88d84022f882e79799726eb8b9fb0bbb1a5

~/Documents/tag-service$  git push --force origin master

强制重置到某个提交点,这时候,你再使用git log 查看,是看不到被重置的提交点的!

image.png

但是git reflog可以:

~/Documents/tag-service$ git reflog

image.png

~/Documents/tag-service$ git reset --hard e22c03c

HEAD 现在位于 e22c03c 测试提交1

~/Documents/tag-service$  git push --force origin master

使用git log 可以看到重置成功!

image.png

4、git rebase

操作实际上是将当前执行rebase分支的所有基于原分支提交点之后的commit打散成一个一个的patch,并重新生成一个新的commit hash值,再次基于原分支目前最新的commit点上进行提交,并不根据两个分支上实际的每次提交的时间点排序,rebase完成后,切到基分支进行合并另一个分支时也不会生成一个新的commit点,可以保持整个分支树的完美线性

5、git merge

操作合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将两个分支的最新一次commit点进行合并成一个新的commit,最终的分支树呈现非整条线性直线的形式

6、”正规而正统”的方式来回退代码,rebase + revert

具体操作,可以参考文章:https://zhenbianshu.github.io/2019/05/ways_to_rollback_git_code.html

文章https://www.jianshu.com/p/4a8f4af4e803详细描述了rebase的操作细节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值