Git是一个分布式版本控制软件,最初的目的是更好的管理Linux内核开发设计,由林纳斯·托瓦兹创作。
现在的软件开发生产中,大部分都是基于git来管理的,相比于svn,有更多更好的特性。平时用来管理代码分支版本特别轻松。但有时候会碰到几种情况:

  1. 已提交的代码想撤回;
  2. 提交的代码有bug,想跳过提交代码的版本;
  3. 分支管理混乱,想要整理一下。

  4. 综合来说,就是碰到问题想撤回,使用什么git命令来操作。
    网上搜索一下,发现主要有几个命令有相似的功能,但是有时会分不清楚,不知道使用哪一个,用了之后,写好的代码会不会消失不见了?会不会导致代码冲突等一系列问题。这篇文章就结合平时的使用情况以及查阅资料的情况下,做一个总结。

reset

git reset命令,可以理解为"修改历史",达成的效果是:代码直接回退到指定版本,在指定版本之后的提交记录通通消失(其实还在,只是还没有加入暂存区)。以master分支为例,假设当前提交记录为 no.5,如果我们想回到no.3,有两种方式,使用Git命令或者使用idea菜单。这里使用菜单栏。右键no.3,选择Reset Current Branch to Here。会有四种方式任你选择,其实就是命令git reset后指定的参数:
Soft:重置到指定版本,但是指定版本和当前版本之间的修改文件还是会保存在暂存区不做修改,即git add 后的状态,等待再一次commit;
Mixed(默认)重置到指定版本,但是指定版本和当前版本之间的修改文件不会保存在暂存区,即还需要git add 添加到暂存区和之后的git commit 操作,是idea的默认操作:
Hard:重置到指定版本,但是指定版本和当前版本之间的修改文件都会消失!!!慎重选择!!慎重选择!!慎重选择!!;
Keep:b1分支编辑一些文件,并且已经提交,接着继续工作,但是现在你发现当前在工作区中的内容应该属于b2分支,与之前的提交没有关系。此时,可以开启一个新的分支b3,并且保留着工作区中已经添加或者修改的的内容;
默认情况下,点击reset之后,版本回退到no.3,并且版本树上之后的提交版本都会消失,在修改记录里面会有no.5版本修改的内容放在暂存区,根据需要增删即可。

revert

git revert命令,可以理解为"撤销",但是把撤销的操作作为一个新的记录来提交。还以master分支举例。假设当前的版本no.5,想要撤销到no.3版本的代码,使用git revert命令或者idea在Local Changes里面,右键点击no.3选择git revert,当前代码就会回退到no.3版本时候的代码。但是~,划重点:
此次撤销操作不会影响记录树,也就是no.4,no.5版本并不会消失,而是在no.5版本之后,多出来一个no.6版本,这个版本的内容和no.3一毛一样!!!


git reset,git revert 的区别已经搞清楚了,工作中可以按照个人的需求去使用,但是在使用个别命令时,一定充分考虑,仔细确认过之后,再去操作。

gi命令中reset,revert的区别和使用相关推荐

  1. git reset revert rebase 区别

    最近合并他人代码,因为代码是从git代码库之外来的,于是出了各种问题.于是又翻看了git教程.这里推荐两篇: Git教程 - 廖雪峰的官方网站 非常通俗易懂,教了最基本的,十分实用. ###Git 基 ...

  2. dd命令中dsync和fsync区别

    在Linux系统中经常会使用dd命令来测试硬盘的写入速度,命令会涉及几个常用参数:sync.dsync.fsync与fdatasync # dd if=/dev/zero of=/tmp/1G bs= ...

  3. Linux命令中的$()和${}的区别

    文章目录 $() ${} $() $() 小括号里面是 Linux 命令,作用就是执行里面的命令后返回执行的结果:和 ``(反引号)作用一样. $() 与 ``(反引号)都是用来作命令替换的.命令替换 ...

  4. git-代码撤销、回滚到任意版本(git回滚命令reset、revert的区别)

    文章目录 一.Git 代码撤销.回滚到任意版本(当误提代码到本地或master分支时) 二.git回滚命令reset.revert的区别 1. 背景知识 2. 方法一:git reset(回退) 3. ...

  5. git checkout和git reset的一些区别以及配置git简写命令

    一.背景 在调试代码的时候,每次都要通过git上传到服务器调试,实在是一件很麻烦的事情.所以对于一些微小的改动,我就直接在服务器上修改.等调试成功之后,用git reset再回退到之前的版本,后来经过 ...

  6. git中reset与revert的使用

    最近用github做我的博客,有些时候会设置错误需要用撤回操作,这时就用到git revert与reset reset(版本撤回) 格式 git reset [-q] [<commit>] ...

  7. CAD入门攻略:CAD软件中动态输入坐标与在CAD命令行中输入坐标的区别

    浩辰CAD软件提供了动态输入功能,动态输入可以让我们将注意力集中到图面上,在绘制图纸的过程中不必经常看CAD命令行,从而提高绘图效率.但什么时候是相对坐标,什么时候是绝对坐标,对图纸绘制也是有所影响的 ...

  8. Linux中cp和scp命令的使用方法和区别

    Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同. cp --- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件  scp --- 主要是在不同 ...

  9. linux命令中:wq和:wq!区别

    [html] view plain copy //上面的命令只是在vi编辑命令中使用 首先使用esc(键退出)->:(符号输入)->wq(保存退出) :wq(保存编辑操作退出) :wq!( ...

最新文章

  1. 2018年最后几天学什么?给你关注度最高的10篇文章
  2. python文件的基础操作
  3. Struts2 JSON
  4. 程序员求助:被领导强行要求写Bug该怎么办?网友的回答让我笑翻
  5. iOS界面设计之基础控件的学习 --- UITextField
  6. android wear ios表盘,秒杀 Apple Watch,Android Wear 又有 17 款新表盘可以玩啦!
  7. mysql的主主复制模型
  8. Android TabLayout定制CustomView与ViewPager交互双向联动
  9. WPF备忘录(1)有笑脸,有Popup
  10. 小i机器人伴侣_【数据分析】2020年3月全国工业机器人产量统计数据分析
  11. Tools_Procexp找文件被哪个进程占用
  12. 信息熵及其Python的实现
  13. 生物信息学入门之基本概念之蛋白质同源检测和折叠识别
  14. 26 王者荣耀刷金币脚本
  15. Java小游戏练习---超级玛丽代码实现
  16. gitbucket push卡住
  17. 真实的周星星,你了解吗?
  18. 自动化测试 - 12306火车票网站自动登录工具
  19. 全国各地区PPP项目数+投资额(2016-2021)
  20. 使用spm预处理fMRI数据

热门文章

  1. [Python 爬虫]煎蛋网 OOXX 妹子图爬虫(1)——解密图片地址
  2. 零基础大学才学计算机专业,零基础90后大学毕业待业学计算机
  3. 计算机操作员技师考试内容,计算机操作员技师理论考试题库.doc
  4. 论区域健康一卡通的技术及功能
  5. STM32程序DAP下载方式和串口下载方式分析
  6. js逆向-某蜓有声小说获取音频url地址
  7. DARPA“拒止环境中协同作战”
  8. Netty编写客户端
  9. 模式识别和机器学习有必要学么_UC Berkeley2019深度学习与应用自然语言处理实战课程分享...
  10. 暴风集团实际控制人冯鑫因涉嫌犯罪被公安机关采取强制措施