git reset HEAD 和 git reset --hard HEAD 区别

weblog Md 560 0 0

总结:

  • 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

目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。