git reset HEAD 和 git reset --hard HEAD 区别
总结:
git reset HEAD 是将咱暂存区和HEAD的提交保持一致
git reset —hard HEAD 是将工作区、暂存取和HEAD保持一致
[root@mq1 ~]# mkdir a
[root@mq1 ~]# cd a
[root@mq1 a]# git init # 初始化git
初始化空的 Git 版本库于 /root/a/.git/
[root@mq1 a]# vi a.txt # 创建文件,写入内容1
[root@mq1 a]# cat a.txt
1
[root@mq1 a]# git add a.txt # 添加到暂存区
[root@mq1 a]# git commit -m "a" # 提交到代码库
[master(根提交) 98d4dfe] a
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[root@mq1 a]# vi a.txt # 修改文件内容为12
[root@mq1 a]# cat a.txt
1
2
[root@mq1 a]# git add a.txt # 添加到暂存区,内容为12
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt # 修改工作区文件,内容为123
1
2
3
[root@mq1 a]# git reset HEAD a.txt # 重置暂存区,使暂存区和代码库HEAD保持一致,并不会改变工作区
重置后撤出暂存区的变更:
M a.txt
[root@mq1 a]# cat a.txt # 工作区文件内容还是123
1
2
3
[root@mq1 a]# git checkout a.txt # 将暂存区的内容同步到工作区
[root@mq1 a]# cat a.txt # 工作区的文件内容修改为1,证明 git reset HEAD a.txt 命令使暂存区和HEAD保持一致,但不会改变工作区
1
[root@mq1 a]# vi a.txt # 重新修改工作区文件内容为12
[root@mq1 a]# cat a.txt
1
2
[root@mq1 a]# git add ./a.txt # 添加到暂存区,内容为12
[root@mq1 a]# vi a.txt # 修改工作区文件,内容为123
[root@mq1 a]# cat a.txt
1
2
3
[root@mq1 a]# git reset --hard HEAD # 执行重置命令
HEAD 现在位于 98d4dfe a
[root@mq1 a]# cat a.txt # 发现工作区内容和代码库内容保持一致都是1
1
[root@mq1 a]# git checkout ./a.txt # 暂存区内容也是1
[root@mq1 a]# cat a.txt
1
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。