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却 ...
随机推荐
- 移动端h5页面meta标签设置
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable= ...
- DSP资源分享贴
DSP资源分享 [2017.5.16 更新] 分享资源共同学习.以前的资源很多人都说用不了了,我会陆续补充,逐步完善.这里不单单分享DSP的,设计基础的,还有其他的电子相关的比较好的资源吧主都和您分享 ...
- pytorch中词向量生成的原理
pytorch中的词向量的使用 在pytorch我们使用nn.embedding进行词嵌入的工作. 具体用法就是: import torch word_to_ix={'hello':0,'world' ...
- 1014-32-首页13-cell的结构分析---导航栏中间title位置的按钮的尺寸设置---setFrame----
#import "HWTitleButton.h" #define HWMargin 5 @implementation HWTitleButton - (id)initWithF ...
- Redis和Mecahe的简介
Memcache介绍 概念:Memcache是一个高性能,分布式内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. ...
- 1-Linux运维人员要求
linux 运维: 1.linux基础操作命令2.linux基础服务搭建3.文本处理命令4.shell脚本编程 python perl php5.数据库 mysql oracle6.lvs集群 热备 ...
- 1082: [SCOI2005]栅栏
链接 思路 二分+搜索+剪枝. 首先二分一个答案,表示最多可以切出x块.(一个结论:切出的一定是从较小的前x块.如果一个木材可以满足很多个需要的木材,那么切出最小的,就意味着以后再选时的机会更多.) ...
- Redis数据更新
技术交流群: 233513714
- echo shell commands as they are executed
http://stackoverflow.com/questions/2853803/in-a-shell-script-echo-shell-commands-as-they-are-execute ...
- DataGridView重查后,返回原来所在行
首先记录选中行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //查询前记录选中行 int _currentRow = 0; //int _cu ...
