git reset 三种使用方法( -- hard \ soft \ mixed )
参数:
参数 |
功能 |
场景 |
–hard |
清空工作区与缓存区 |
放弃目标版本后所有的修改 |
–soft |
保留工作区与缓存区,但是把版本之间的差异存放在缓存区 |
合并多个commit |
–mixed(或缺省) |
保留工作区清空缓存区,把版本之间的差异存放在工作区 |
1、有错误的commit需要修改;2、git reset HEAD清空缓存区 |
— hard
[root@mq1 a]# git init
初始化空的 Git 版本库于 /root/a/.git/
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# git commit -m "a"
[master(根提交) 30ace42] a
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
3
[root@mq1 a]# git diff --cached
diff --git a/a.txt b/a.txt
index d00491f..1191247 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,2 @@
1
+2
[root@mq1 a]# git diff
diff --git a/a.txt b/a.txt
index 1191247..01e79c3 100644
--- a/a.txt
+++ b/a.txt
@@ -1,2 +1,3 @@
1
2
+3
[root@mq1 a]# git reset --hard HEAD
HEAD 现在位于 30ace42 a
[root@mq1 a]# git diff --cached
[root@mq1 a]# git diff
[root@mq1 a]# cat a.txt
1
[root@mq1 a]#
—soft
[root@mq1 a]# git init
初始化空的 Git 版本库于 /root/a/.git/
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# git commit -m "a"
[master(根提交) 4cf9445] a
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# git commit -m "a2"
[master 54d3e3f] a2
1 file changed, 1 insertion(+)
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
3
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
3
4
[root@mq1 a]# git diff --cached
diff --git a/a.txt b/a.txt
index 1191247..01e79c3 100644
--- a/a.txt
+++ b/a.txt
@@ -1,2 +1,3 @@
1
2
+3
[root@mq1 a]# git diff
diff --git a/a.txt b/a.txt
index 01e79c3..94ebaf9 100644
--- a/a.txt
+++ b/a.txt
@@ -1,3 +1,4 @@
1
2
3
+4
[root@mq1 a]# git log
commit 54d3e3f3b9609747e343c288b49d0f2580cb4578
Author: jiajiajia <18438301593@163.com>
Date: Thu Dec 8 09:23:31 2022 +0800
a2
commit 4cf94452ee4644798d871f306a013bbaeff63265
Author: jiajiajia <18438301593@163.com>
Date: Thu Dec 8 09:23:04 2022 +0800
a
[root@mq1 a]# git reset --soft 4cf94452ee4644798d871f306a013bbaeff63265
[root@mq1 a]# git diff --cached
diff --git a/a.txt b/a.txt
index d00491f..01e79c3 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,3 @@
1
+2
+3
[root@mq1 a]# git diff
diff --git a/a.txt b/a.txt
index 01e79c3..94ebaf9 100644
--- a/a.txt
+++ b/a.txt
@@ -1,3 +1,4 @@
1
2
3
+4
[root@mq1 a]# cat a.txt
1
2
3
4
[root@mq1 a]#
—mixed
[root@mq1 a]# git init
初始化空的 Git 版本库于 /root/a/.git/
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
[root@mq1 a]# git add a.txt
[root@mq1 a]# git commit -m "a"
[master(根提交) bde2a3f] a
1 file changed, 1 insertion(+)
create mode 100644 a.txt
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# git commit -m "a2"
[master 03429a1] a2
1 file changed, 1 insertion(+)
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat ./a.txt
1
2
3
[root@mq1 a]# git add ./a.txt
[root@mq1 a]# vi a.txt
[root@mq1 a]# cat a.txt
1
2
3
4
[root@mq1 a]# git diff --cached
diff --git a/a.txt b/a.txt
index 1191247..01e79c3 100644
--- a/a.txt
+++ b/a.txt
@@ -1,2 +1,3 @@
1
2
+3
[root@mq1 a]# git diff
diff --git a/a.txt b/a.txt
index 01e79c3..94ebaf9 100644
--- a/a.txt
+++ b/a.txt
@@ -1,3 +1,4 @@
1
2
3
+4
[root@mq1 a]# git log
commit 03429a146eba26059eaf5cacac30ab07612aaadf
Author: jiajiajia <18438301593@163.com>
Date: Thu Dec 8 09:32:46 2022 +0800
a2
commit bde2a3fe0c1072c1f08230cb5a9b7f7c076a8f4a
Author: jiajiajia <18438301593@163.com>
Date: Thu Dec 8 09:32:15 2022 +0800
a
[root@mq1 a]# git reset --mixed bde2a3fe0c1072c1f08230cb5a9b7f7c076a8f4a
重置后撤出暂存区的变更:
M a.txt
[root@mq1 a]# git diff --cached
[root@mq1 a]# git diff
diff --git a/a.txt b/a.txt
index d00491f..94ebaf9 100644
--- a/a.txt
+++ b/a.txt
@@ -1 +1,4 @@
1
+2
+3
+4
[root@mq1 a]# cat a.txt
1
2
3
4
[root@mq1 a]#