说说Git reset 与 revert 的故事
2017-12-28 本文已影响16人
朋友喜欢叫我春哥
俗话说一入Git深似海,单独说Git一本书恐怕都不够,今天只是浅尝止渴而已。
简单说说reset
和revert
2个主要命令。
要学习Git,首先要明白Git几个基本概念
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
搞懂了这三个区域,才能更好理解这些Git命令是在干什么。
一、reset
reset命令的作用?
reset
命令把当前分支指向另外一个位置(提交的ID版本号),并且有选择性的变动暂存区
和工作区
的内容。
原理是基于本地仓库的文件去覆盖暂存区或工作区的内容
reset主要参数的区别
当没有指定ID的时候,默认使用HEAD
,如果指定ID,那么就是基于指向ID去变动暂存区或工作区的内容
// 没有指定ID, 暂存区的内容会被当前ID版本号的内容覆盖,工作区不变
git reset
// 指定ID,暂存区的内容会被指定ID版本号的内容覆盖,工作区不变
git reset <ID>
-
--mixed(默认)
默认的时候,只有暂存区变化
-
--hard参数
如果使用
--hard
参数,那么工作区也会变化 -
--soft
如果使用
--soft
参数,那么暂存区和工作区都不会变化
二、revert
revert
命令撤销指定的commit并且新建一个commit,新建comment的内容由指定commit前一个提交内容保持一致
git revert <commit>
revert.txt 三次提交记录
revert前revert.txt的内容
revert后revert.txt的内容
参考链接
以上部分图片来源于图解Git