reset 命令学习建议:reset命令带三个参数,应用于三种情况,初次学习的话,可能理解起来有点费事,不过,大家多看几遍多想几遍,也能学好reset命令的。请牢记住:应用最多是不带参数的reset命令。

1、git reset 的作用

有时候,我们commit提交代码后,发现这一次commit的内容是有错误的,面对这种情况有两种解决方法:

解决方法1:修改错误内容,再次commit一次
解决方法2:使用git reset 命令撤销这一次错误的commit

第一种方法比较直接,但会多次一次commit记录,建议使用第二种方法,因为错误的commit没必要保留下来。

2、git reset 的基本用法

git reset 命令用于回退版本,可以指定退回某一次提交的版本。git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

说明1:--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

说明2:HEAD 表示回退的版本,可以指定回退整个仓库的某个版本,还可以指定回退某个文件的版本,如下所示:

$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ main.java  # 回退 main.java 文件的版本到上一个版本  
$ git reset 052e            # 回退到指定版本

3、git reset 参数介绍

git reset有三个参数:soft、mixed、hard,具体的使用方法下面这张图:

git reset.png

3.1、reset --hard:最危险的操作,容易造成丢失。

reset --hard 会在重置版本的同时,重置暂存区和工作目录里的内容。也就说,就是在暂存区中你没有commit的修改会被全部擦掉,在工作区中你没有add的修改也被全部擦掉。

3.2、reset --soft:保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区。

reset --soft 会在重置版本库的时候,保留工作目录和暂存区中的内容,并把重置版本库所带来的新的差异放进暂存区。也就说是说,工作目录的内容不受影响,而暂存区中已经commit的内容变成已add的状态。

说明:我们使用soft参数的情况不多,如果你有更好的使用介绍,请分享出来吧。

3.3、reset 不加参数(mixed):保留工作目录,并清空暂存区中未提交的修改。

reset 如果不加参数,那么默认使用 --mixed 参数。它的执行结果是:保留工作目录,并且清空暂存区中未提交的修改。也就是说,工作目录的修改、暂存区的未提交的内容以及由 reset 所导致的新的文件差异,都会被放进工作目录。简而言之,就是把所有差异都混合(mixed)放在工作目录中。

参考:

《Git入门教程》。这是一个不错的入门教程,值得分享给大家。这个教程参考Git官方文档以及网上众多Git技术博客而成,从浅入深,分析透彻,值得Git初学者和Git中级用户学习和参考。

标签: none

[2024年]-[红黑树技术联盟介绍]-[成员故事]


[2024年]-[JavaOffer]-[训练营]


添加新评论