[git]撤销的相关命令:reset、revert、checkout
时间:2022-05-07
本文章向大家介绍[git]撤销的相关命令:reset、revert、checkout,主要内容包括基本概念、checkout、reset、revert这三个指令、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
基本概念
- 工作区
- 暂存区
- 本地版本仓库
- 远程版本仓库
如果不清晰上面的四个概念,请查看廖老师的git教程
这里我多说几句:最开始我使用git的时候,我并不明白我为什么写完代码要用git的一些列指令把我的修改 存起来。后来用多了,也就明白了为什么。git是一个“版本管理工具”,大家在写东西的时候都用过“回撤” 这个功能,但是回撤只能回撤几步,假如想要找回我三天之前的修改,光用“回撤”是找不回来的。而“版本管理工具” 就是记录每次的修改,只要提交到版本仓库,你就可以找到之前任何时刻的状态(文本状态)。
当然,上面我只说了一部分git的好处,只为后面的东西作为铺垫。因为,后面会说到三个关于git上面如何“反悔”、 “回到任意时候的代码”,其实就是上面说的原始的“回撤”升级版,版本管理工具的“回撤”。
checkout、reset、revert这三个指令
- checkout:清空工作区的修改
- 清空
工作区
的修改git checkout changed_file
,清空所有工作区
的修改git checkout .
- 切换分支
git checkout branch_name
(在切换分支之前,需要清空工作区,提交到本地版本仓库
或者移除工作区的东西
) - 快速查看某个版本的代码
git checkout commit_id/HEAD~last_version_num
,切换到一个临时分支,内容就是指定的版本内容
- 清空
- reset:撤销某次提交(commit),并把这次提交的所有修改放到工作区
-
git reset HEAD~last_version_num/commit_id
,注意:这个操作修改历史,所以push到 远程仓库会出现问题,可以通过-f
参数,实现强制推送。
-
- revert:回到之前的某个版本的状态,并创建一个新的提交。
-
git revert HEAD~last_version_num/commit_id
,创建一个新的commit,该内容为指定的 版本的内容,注意:这个操作并不会重写历史,也就是原来的commit还是存在的。
-
git reset 和git revert的区别: git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。 git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进
在回滚这一操作上看,虽然效果差不多,但是日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
- python编码问题之"encode"&"decode"
- python3编码问题终结者--还搞不懂你来找我
- Pycharm集成PyQt4并使用
- python遍历一个目录,输出所有文件名
- pyqt4实现tab界面切换
- 腾讯云Fintech云端系列论坛首站北京,揭秘如何全链路赋能互联网金融
- Flask入门笔记(一)
- 刷脸还是指纹识别,that's a question
- c#:使用using关键字自动释放资源未必一定就会有明显好处
- MongoDB 学习笔记(原创)
- Silverlight:ScorllViewer随Tab键自动跟随子控件的Focus滚动
- 老域名做新站如何能快速得上首页?
- Silverlight:分包下载及SEO优化方案
- jQuery调用RESTful WCF示例(GET方法/POST方法)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浙大版《C语言程序设计(第3版)》题目集 习题9-5 通讯录排序
- 浙大版《C语言程序设计(第3版)》题目集 习题7-5 找鞍点
- 浙大版《C语言程序设计(第3版)》题目集 练习5-1 求m到n之和
- 手把手教你用Python爬取快递100查询你的物流信息
- 浙大版《C语言程序设计(第3版)》题目集 练习5-2 找两个数中最大者
- 浙大版《C语言程序设计(第3版)》题目集 练习5-3 数字金字塔
- 浙大版《C语言程序设计(第3版)》题目集 习题5-1 符号函数
- 浙大版《C语言程序设计(第3版)》题目集 习题5-2 使用函数求奇数和
- 浙大版《C语言程序设计(第3版)》题目集 习题5-3 使用函数计算两点间的距离
- 浙大版《C语言程序设计(第3版)》题目集 习题5-4 使用函数求素数和
- Linux进程之如何查看进程详情?
- 浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数
- 浙大版《C语言程序设计(第3版)》题目集 习题5-6 使用函数输出水仙花数
- 浙大版《C语言程序设计(第3版)》题目集 习题5-7 使用函数求余弦函数的近似值
- 浙大版《C语言程序设计(第3版)》题目集 习题6-1 分类统计字符个数