git代码版本管理(1)——git版本回滚

1、问题背景

       在利用github、gitlab、Gitee等代码管理器中对代码的管理,我们有时会出现错误提交的情况,此时我们希望能撤销提交操作,让程序回到提交之前的样子。       本文总结了两种解决方法:回退(reset)、反做(revert)。       push前与push后。

2、git提交小知识

      使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)。每个版本都会有自己的版本信息,如特有的版本号、版本名等。如下图,假设只有一个分支:每次提交都会生成一次提交的ID号(此ID号唯一)(如下图)

3、解决方式

3.1 还没有push推送到远端、只执行了本地commit提交
[root@db test]# ls     # 当前本地仓库下的文件README.md  第一次提交.txt  第二次提交.txt[root@db test]# touch 第三次提交.txt   # 新建一个文件[root@db test]# git add .[root@db test]# git commit -m '3'   # 本地提交[master aee4c30] 3 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\347\254\254\344\270\211\346\254\241\346\217\220\344\272\24                                                                                                         4.txt"[root@db test]# git log    # 查看所有提交信息commit aee4c30c17b5c916249bdcc180d3f9a912222198Author: test Date:   Mon Oct 12 16:25:02 2020 +0800    3commit fa8f987d9ac5f37b7e77cbf519825b712ee3b03aAuthor: test Date:   Mon Oct 12 16:13:31 2020 +0800    2commit ccedae5cc29205f44c2164b8f541bd28dd1197edAuthor: test Date:   Mon Oct 12 16:12:49 2020 +0800    1commit 729fd8eaa8f7ec30784bd2cdafbcc262d2f9f039Author: test Date:   Mon Oct 12 16:11:33 2020 +0800    add README[root@db test]# git reset --hard fa8f987d9ac5f37b7e77cbf519825b712ee3b03a   # 回滚到指定版本(我这里是回滚到上一个提交的commit_id)HEAD is now at fa8f987 2[root@db test]# ls   # 再次查看README.md  第一次提交.txt  第二次提交.txt[root@db test]#[root@db test]# git log  # 再次查看所有提交信息发现回滚成功commit fa8f987d9ac5f37b7e77cbf519825b712ee3b03aAuthor: test Date:   Mon Oct 12 16:13:31 2020 +0800    2commit ccedae5cc29205f44c2164b8f541bd28dd1197edAuthor: test Date:   Mon Oct 12 16:12:49 2020 +0800    1commit 729fd8eaa8f7ec30784bd2cdafbcc262d2f9f039Author: test Date:   Mon Oct 12 16:11:33 2020 +0800    add README
3.2 push推送至远端,使用 reset 回滚
  • 3.2.1适用场景:

  如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
  • 3.2.2 reset 回滚原理:

  git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,不会保存此版本后的提交,如下图

3.2.3开始执行回滚:

①. 查看版本号:

git log 

②. 使用“git reset --hard 目标版本号”命令将版本回退:

 git reset --hard ccedae5cc29205f44c2164b8f541bd28dd1197ed

③.使用“git push -f”提交更改:

git push -f

④.验证:

至此使用reset回退成功!

3.3 push推送至远端,使用 revert回滚
  • 3.3.1 适用场景:

  如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
  • 3.3.2 revert回滚原理:

  git revert的作用是把之前提交的版本作为一个新版本再次提交(提交位置为当前版本的后一个位置,如想要回滚到版本二,当前为版本三,则重新提交的为版本四,不会像reset删除回滚之后的版本,只会还原版本二所提交的内容),以达到撤销该版本的修改的目的。如下图所示:

3.2.3开始执行回滚:

①. 查看版本号:

git log

②.使用“git revert -n 版本号”反做,并使用“git commit -m 版本名”提交:

git revert -n  ccedae5cc29205f44c2164b8f541bd28dd1197edgit commit -m "revert 1 or commit 4" 

③.使用“git push”提交更改:

git push

④.验证:

1、可是用 git log查看2、可以在图形化页面查看

反做成功!

4、其它值得注意的参数(本文回滚用的是hard)
git reset --hard HEAD^         回退到上个版本git reset --hard HEAD~3        回退到前3次提交之前,以此类推,回退到n次提交之前git reset --hard commit_id     退到/进到 指定commit的sha码git push origin HEAD --force   强推命令git reset --mixed      此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息git reset --soft       回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可git reset --hard       彻底回退到某个版本,本地的源码也会变为上一个版本的内容

git 代码回滚_git代码版本管理(1)——git版本回滚相关推荐

  1. git钩子放服务器_Git代码自动化部署、Hook、钩子

    简介 本地git 的上推到服务器后,会触发 hooks/post-update 脚本,通过简单的修改即可完成Git 代码的自动化部署. Git 服务搭建可以参考 https://www.jianshu ...

  2. git 覆盖本地修改_Git拉力–如何使用Git覆盖本地更改

    git 覆盖本地修改 When you learn to code, sooner or later you'll also learn about Version Control Systems. ...

  3. 回滚master代码_[转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)...

    两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 情况二 代码已经push到运程仓库,想把代码还原到上一次提交,此 ...

  4. 回滚master代码_Git之master主干代码回滚

    本节概览:通过git revert来实现线主干代码的回滚.如下命令 对于 merge类型的commit对象,还需要"-m"参数 git revert -m 1  commit-id ...

  5. git rollback代码都没了_git回滚线上代码

    由于之前自己推代码的时候操作失误,才push代码的时候没有push到dev分支,而是push到了本地master同名分支的线上master分支,覆盖掉了线上在用的代码.在搜索解决办法的时候,发现网上给 ...

  6. git 代码回滚_谁说用 Git 一定要用命令行?试试 SourceTree 吧

    作者:邵磊http://juejin.im/post/59bc944d51882519777c5e07 整理:后端技术精选 前言 作为使用Sourcetree大于3年的我,已熟知git的每一个功能,并 ...

  7. git add 回滚_Git的reset命令详解

    git reset 这个命令是版本控制的精髓,非常实用且常用,真香警告! 一.为什么 我们玩闯关游戏的时候,经常要把游戏进度保存,以便我们随时能够回到那一刻.特别是打BOSS之前,做好保存,发现打不过 ...

  8. idea代码回滚_IDEA远程仓库版本回滚

    使用 git 进行项目的版本控制时,肯定会遇到回滚版本的情况,回滚有两种,一种是本地仓库回滚,另外一种是远程仓库回滚.以下详细讲解两种回滚方式,本文主要讲解远程回滚,以及常见使用误区. 本地仓库回滚 ...

  9. git提交后的代码在哪儿_git 分支合并策略

    前言 git 依靠分布式版本控制.以及出众的分支功能受到互联网开发们的青睐,如果你上过 github 就离不开 git 的相关操作. 我司原来用的是 svn ,经过两年的时间,全项目都已换成 git ...

最新文章

  1. Android: 自定义Tab样式
  2. 基于java人体检测技术_几篇深度图人体检测论文的实现
  3. html5 学习笔记三(web存储)
  4. 央视消息 | 没考驾照的人可能要恭喜了!
  5. Hive 导入CSV文件
  6. 【Flink】Flink 消费 kafka报错 写入 es 死信队列 FetchSessionHandler DisconnectException
  7. java基础篇--------------配置jdk的环境变量
  8. linux java 日期 报错_Linux下java报错Too many open files的解决方法
  9. Unity3D_(插件)小地图自刷新制作Minimap小地图
  10. 选择图层_PS图层之——基本功能详细介绍
  11. GNSS说第(七)讲---自适应动态导航定位(七)---抗差估计理论介绍
  12. 0元参会丨第十届数据技术嘉年华精彩抢先速览
  13. JS字符串格式化函数 string.format
  14. Vue取得URL参数
  15. 最新中文linux系统,veket linux系统下载
  16. Linux环境变量每次都要重新source的问题
  17. Mosquitto 在Linux服务器上的部署过程中以及踩过的坑
  18. Hibernate的集合影射
  19. BGPv4-原理介绍+报文分析+配置示例
  20. git 不常用命令小札

热门文章

  1. 用easyx画五角星_【洛谷日报#195】有个东西叫EasyX
  2. abp执行mysql语句_在ABP模板工程中使用MySql
  3. Python基础100题
  4. 3-5Tensor创建编程实例
  5. python中math模块函数_python中math模块函数
  6. html瀑布流视频列表,StaggeredGridLayoutManager实现瀑布流视频列表和头部广告位以及分栏Header条...
  7. 微信各地服务器如何同步,彻底搞清楚并实现多端同步登录
  8. 鸿蒙硬件HI3861-I2C-MCP23017
  9. JAVA 实现FTP功能_在Java程序中实现FTP功能
  10. 循环上传导致oom_java之OOM排查