Git学习之旅 - 深入理解git reset 命令

栏目: 编程工具 · 发布时间: 6年前

内容简介:重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令。来看看git reset命令用法。-----------------------------------------------------------------------------------------------------------用法一:

重置命令(git reset)是Git 最常用的命令之一,也是最危险最容易误用的命令。来看看git reset命令用法。

-----------------------------------------------------------------------------------------------------------

用法一: git reset [-q]  [] [--]

用法二: git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] []

-----------------------------------------------------------------------------------------------------------

上面列出了两个用法,其中都是可选项,可以使用引用或提交ID,如果省略则相当于使用了HEAD的指向作为提交ID.

上面列出的两种祖坟的区别在于,第一种用法在命令中包含路径.为了避免路径和引用(或者提交ID)同名而发生冲突,可以在前用两个连续的短线(减号)作为分隔。

第一种用法(包含了路径的用法)不会重置引用,更不会改变工作区,而是用指定提交状态()下的文件()替换掉暂存区中的文件。例如命令git reset HEAD 相当于取消之前执行的git add 命令时改变的暂存区。

第二种用法(不使用路径的用法)则会重置引用。根据不同的选项,可以对暂存区或工作区进行重置。参照下面的版本库模型图,来看一看不同的参数对第二种重置语法的影响。

Git学习之旅 - 深入理解git reset 命令

使用参数 --hard, 如:git reset --hard .

会执行上图中的全部动作1,2,3,即:

1.替换引用的指向。引用指向新的提交ID.

2.替换暂存区。替换后,暂存区的内容和引用指向的目录树一致。

3.替换工作区。替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同。

使用参数 --soft, 如:git reset --soft .

会执行上图中的操作1。即只更改引用的指向,不改变暂存区和工作区。

使用参数 --mixed或不使用参数(默认为 --mixed),如:git reset .

会执行上图中的操作1和操作2.即更改引用的指向及重置暂存区,但是不改变工作区。

下面通过一些示例,看一下重置命令的不同用法。

命令:git reset

仅用HEAD指向的目录树重置暂存区,工作区不会受到影响,相当于将之前用git add命令更新到暂存区的内容撤出暂存区。引用也未改变,因为引用重置到HEAD相当于没有重置。

命令:git reset HEAD

同上

命令:git reset -- filename

仅将文件filename 的改动撤出暂存区,暂存区中其它文件不改变。相当于对命令git add filename 的反操作。

命令:git reset HEAD filename

同上

命令:git reset --soft HEAD^

工作区和暂存区不改变,但是引用向前回退一次。当对最新提交的提交说明或提交的更改不满意时,撤销最新的提交以便重新提交。

命令:git reset HEAD^

工作区不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。

命令:git reset --mixed HEAD^

同上

命令:git reset --hard HEAD^

彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。自行一次以来的提交全部丢失。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-01/156567.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

High Performance JavaScript

High Performance JavaScript

Nicholas C. Zakas / O'Reilly Media / 2010-4-2 / USD 34.99

If you're like most developers, you rely heavily on JavaScript to build interactive and quick-responding web applications. The problem is that all of those lines of JavaScript code can slow down your ......一起来看看 《High Performance JavaScript》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具