git的回退和撤销操作
回退是git的使用中很常用的一个操作,如果清楚各个回退命令的作用,不仅大大加快代码回退的效率,还能避免代码回退造成的事故
1、git reset --hard [commit]
清空暂存和未暂存的更改 ,仓库重置到目标提交。
也就是说,使用该命令后,文件状态变为目标提交的状态
所以,可以: git reset HEAD --hard 来丢弃所有已暂存和未暂存的更改
2、git reset --soft [commit]
保留暂存和未暂存的更改,仓库重置到目标提交,目标提交之后的所有提交的变更都变为暂存状态。
也就是说,使用该命令后,文件的状态和使用前一样,变化的只是git相关的状态(暂存、HEAD等)
3、git reset --mixed [commit][filename](git reset的默认模式)
保留未暂存的更改,清空暂存的更改,仓库重置到目标提交,目标提交之后的所有提交的变更都变为未暂存状态。
也就是说,使用该命令后,文件的状态和使用前一样,变化的只是git相关的状态
所以,可以: git reset HEAD [filename] 来丢弃暂存的更改
使用git reset时请加倍小心,因为他可以在有更改没提交的情况下使用,若操作失误,有可能丢失没提交的更改 。若想撤销reset操作,可使用
git reflog找到相应的操作记录id,回退之,但是没提交的更改是找不回来了的。
4、git revert [commit]
生成一个新的提交来撤销某次提交,不会影响此次提交之前的 commit。
建议使用,生成新的提交可增强提交树的可读性
5、git checkout [filename]
丢弃未暂存的修改: git checkout [filename] (从暂存区取对应文件覆盖到暂存区)
丢弃已暂存和未暂存的修改:git checkout [commit] [filename] (清空未暂存的修改,从某个提交取对应文件覆盖到暂存区)
适用于不想回退整个提交,而是只回退某个(些)文件的情况
git的回退和撤销操作的更多相关文章
- git版本回退与撤销操作
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步, ...
- git基本命令之删除撤销操作
1.将删除文件恢复--撤销所删除的文件git checkout 文件名 2.git resetgit reset --hard commitID(或某个节点)----强制切换到某个点,会导致所修改的内 ...
- Git版本回退和撤销修改的区别
在阅读廖雪峰git教程时,对版本回退和暂存区撤销修改没太看懂,所以自己测试了一下. 版本回退: git reset --hard HEAD 这个命令用于版本回退,就是将已提交的版本覆盖本地工作区的内容 ...
- Git版本回退和撤销修改
版本回退: 在实际工作中,我们会不断对文件进行修改,然后不断提交修改到版本库里,一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失. ...
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...
- Git撤销操作
撤销操作的相关文章 http://www.linuxidc.com/Linux/2015-06/119350.htm ——撤销已经修改,但是还没有添加到暂存区的操作: 解决方案: 有两种情形: ...
- 大话git中的撤销操作
下面以现实场景作为情境. 基础知识,理解git中的几个区域 本地代码已经add,未commit 修改本地工作目录中的readme.md,添加文字"第一次修改" 然后查看下状态 ➜ ...
- git 必看,各种撤销操作
场景概念说明 首先说明一个概念, git是一个分布式的版本控制工具,分布式即 git 管理的项目是有多个大致平等的仓库的.通过一个例子来说明这个东西. 举一个最简单的使用场景: 你在github 建立 ...
- Git III: 撤销操作
所谓撤销操作,无非就是后悔药.对Git来说,撤销操作主要是以下几块: 撤销已经提交的Commit. 对已经通过git add加入Stage的文件,进行unstage操作. 对已经是Untracked却 ...
随机推荐
- tcl之控制流-条件运算、条件测试、逻辑表达
- 操作 Java 数组的 12 个最佳方法
1. 声明一个数组 Java代码: String[] aArray = new String[5]; String[] bArray = {"a","b",& ...
- 单片机入门学习笔记8:STM32单片机使用
经常会在某个QQ群里看见某人的QQ昵称的名字"不会32绝不改名",其实无论会不会,之后名称都改了. STM32单片机在我看来就三部分组成:各部分的初始化,中断的使用,Main函数内 ...
- iOS常用控件-UIScrollView
一. 常见属性 @property (nonatomic) CGPoint contentOffset; //记录UIScrollView滚动的位置 @pro ...
- JDK及配置
Java Jdk开发时环境,程序员使用 Jre运行时环境,用户使用 Jdk的配置 1.新建java_home jdk的安装路径 例:C:\Program Files (x86)\Java\jdk1 ...
- Android 6.0 动态申请 音频+拍照+相册 权限
1.音频的权限(包括录音和播放) 1.1.首先要在清单中加上两个权限 <uses-permission android:name="android.permission.WRITE_E ...
- PHP.13-日历类实现
日历类实现 1.输出星期 calendar.class.php <?php class Calendar{ function out(){//输出表格 echo '<table align ...
- Pascal游戏 大富翁MUD
大富翁MUD Pascal源码 Chaobs改编自百度网友作品 此源码非Chaobs原创,但转载时请仍注明出处. 估计90后以后就没有孩子知道MUD了. program wxtw; uses crt; ...
- python学习笔记二:流程控制
一.if else: #!/usr/bin/python x = int(raw_input('please input:')) if x >= 90: if x >= 95: print ...
- 了解JavaScript核心精髓(三)
1.js判断对象是否存在属性. hasOwnProperty(‘property’) 判断原型属性是否存在. "property" in o; 判断原型属性和原型链属性是否存在 ...
