Git实战指南----跟着haibiscuit学Git(第十一篇)
笔名: haibiscuit
博客园: https://www.cnblogs.com/haibiscuit/
Git地址: https://github.com/haibiscuit?tab=repositories (欢迎star)
本项目地址: https://github.com/haibiscuit/StudyBook
尊重笔者的劳动成果,未经允许请不要转载
十:版本回退
(1) 场景一 撤销工作区文件的修改(即没有git add到暂存区)
方法一:
git checkout -- filename
方法二:
git restore filename
(2) 场景二 撤销暂存区的修改(即你想清空暂存区内容,但对工作区新的修改不造成影响,即只删除暂存区)
方法一:
git restore --staged filename
方法二:
git reset HEAD -- filename
(3) 场景三 暂存区或本地仓库覆盖工作区(即你已经执行git add或commit操作,又对工作区文件修改,但想撤回或放弃对工作区的修改)
方法一:
git checkout -- filename
//等价于git checkout filename
方法二:
git restore filename
(注:以上的两种方式会覆盖工作区文件,但不会删除暂存区的内容)
(4) 场景四 版本回退
方式一
git reset
git reset --hard HEAD //本地仓库的当前版本覆盖工作区修改
git reset --hard HEAD^ //本地仓库回退到上一个版本
git reset --hard HEAD~2 //本地仓库回退到上两个版本
git reset --hard HEAD~n //本地仓库回退到上n个版本
(注:
使用git reset会删除回退指定版本之后的所有版本)
如果想时光倒流,即回到被删除的版本怎么办:
git reflog //找到想回到的版本
git reset --hard <commit_id> //回退到被删除的版本
方式二
git revert //回退到指定版本之前一个的版本,不是会退到指定版本
git revert HEAD //回退到上一个版本
git revert HEAD^ //回退到上两个版本
git revert HEAD~n //回退到上(n+1)个版本
最后推荐使用git revert方式,并不是像网上说git reset不能用,而是通过git revert重做的方式并不会丢弃重做的版本,更为方便.
最新文章
- mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap
- HTTP2特性预览和抓包分析
- PHP基础Mysql扩展库
- 无线端通用的reset样式
- MenuButton( 菜单按钮)
- python成长之路第三篇(1)_初识函数
- Java面试题之Request对象的主要方法
- Fortran使用隐形DO循环和reshape给一维和多维数组赋初值
- python的__init__几种方法总结
- POJ2891 Strange Way to Express Integers [中国剩余定理]
- 给定一个实数数组,按序排列(从小到大),从数组从找出若干个数,使得这若干个数的和与M最为接近,描述一个算法,并给出算法的复杂度。
- Java多线程:线程间通信之Lock
- Fire Again CodeForces - 35C (BFS)
- 启动期间的内存管理之build_zonelists初始化备用内存域列表zonelists--Linux内存管理(十三)
- js 原生手写AJAX
- Java手动释放对象
- Go语言无锁队列组件的实现 (chan/interface/select)
- android 开发 View _16 自定义计步器View、自定义柱状图View
- 1.7Oob 成员变量可以不初始化 但局部变量必须初始化
- LeetCode题解之N-ary Tree Level Order Traversal