git 代码回滚_git代码版本管理(1)——git版本回滚
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版本回滚相关推荐
- git钩子放服务器_Git代码自动化部署、Hook、钩子
简介 本地git 的上推到服务器后,会触发 hooks/post-update 脚本,通过简单的修改即可完成Git 代码的自动化部署. Git 服务搭建可以参考 https://www.jianshu ...
- git 覆盖本地修改_Git拉力–如何使用Git覆盖本地更改
git 覆盖本地修改 When you learn to code, sooner or later you'll also learn about Version Control Systems. ...
- 回滚master代码_[转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)...
两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 情况二 代码已经push到运程仓库,想把代码还原到上一次提交,此 ...
- 回滚master代码_Git之master主干代码回滚
本节概览:通过git revert来实现线主干代码的回滚.如下命令 对于 merge类型的commit对象,还需要"-m"参数 git revert -m 1 commit-id ...
- git rollback代码都没了_git回滚线上代码
由于之前自己推代码的时候操作失误,才push代码的时候没有push到dev分支,而是push到了本地master同名分支的线上master分支,覆盖掉了线上在用的代码.在搜索解决办法的时候,发现网上给 ...
- git 代码回滚_谁说用 Git 一定要用命令行?试试 SourceTree 吧
作者:邵磊http://juejin.im/post/59bc944d51882519777c5e07 整理:后端技术精选 前言 作为使用Sourcetree大于3年的我,已熟知git的每一个功能,并 ...
- git add 回滚_Git的reset命令详解
git reset 这个命令是版本控制的精髓,非常实用且常用,真香警告! 一.为什么 我们玩闯关游戏的时候,经常要把游戏进度保存,以便我们随时能够回到那一刻.特别是打BOSS之前,做好保存,发现打不过 ...
- idea代码回滚_IDEA远程仓库版本回滚
使用 git 进行项目的版本控制时,肯定会遇到回滚版本的情况,回滚有两种,一种是本地仓库回滚,另外一种是远程仓库回滚.以下详细讲解两种回滚方式,本文主要讲解远程回滚,以及常见使用误区. 本地仓库回滚 ...
- git提交后的代码在哪儿_git 分支合并策略
前言 git 依靠分布式版本控制.以及出众的分支功能受到互联网开发们的青睐,如果你上过 github 就离不开 git 的相关操作. 我司原来用的是 svn ,经过两年的时间,全项目都已换成 git ...
最新文章
- Android: 自定义Tab样式
- 基于java人体检测技术_几篇深度图人体检测论文的实现
- html5 学习笔记三(web存储)
- 央视消息 | 没考驾照的人可能要恭喜了!
- Hive 导入CSV文件
- 【Flink】Flink 消费 kafka报错 写入 es 死信队列 FetchSessionHandler DisconnectException
- java基础篇--------------配置jdk的环境变量
- linux java 日期 报错_Linux下java报错Too many open files的解决方法
- Unity3D_(插件)小地图自刷新制作Minimap小地图
- 选择图层_PS图层之——基本功能详细介绍
- GNSS说第(七)讲---自适应动态导航定位(七)---抗差估计理论介绍
- 0元参会丨第十届数据技术嘉年华精彩抢先速览
- JS字符串格式化函数 string.format
- Vue取得URL参数
- 最新中文linux系统,veket linux系统下载
- Linux环境变量每次都要重新source的问题
- Mosquitto 在Linux服务器上的部署过程中以及踩过的坑
- Hibernate的集合影射
- BGPv4-原理介绍+报文分析+配置示例
- git 不常用命令小札
热门文章
- 用easyx画五角星_【洛谷日报#195】有个东西叫EasyX
- abp执行mysql语句_在ABP模板工程中使用MySql
- Python基础100题
- 3-5Tensor创建编程实例
- python中math模块函数_python中math模块函数
- html瀑布流视频列表,StaggeredGridLayoutManager实现瀑布流视频列表和头部广告位以及分栏Header条...
- 微信各地服务器如何同步,彻底搞清楚并实现多端同步登录
- 鸿蒙硬件HI3861-I2C-MCP23017
- JAVA 实现FTP功能_在Java程序中实现FTP功能
- 循环上传导致oom_java之OOM排查