撤销误添加暂存区文件
1 | #无论是创建新增还是修改新增 |
commit覆盖
1 | #处理少commit但不想多显示提交的记录 |
撤销工作区文件修改
1 | #这些操作是非常<span color="red">危险</span>的,对这个文件的任何修改都会消失 |
git reset命令
要理解reset命令,先理解git的结构,具体可以参考git重置
- soft 只移动HEAD指针位置,不改变暂存区和工作区的状态
- mixed 移动HEAD指针位置,并重置暂存区状态和本地库一致,不改变工作区状态
- hard 移动HEAD指针位置,并重置暂存区和工作区状态,保持3者一致
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#重置指针
$git reset --soft HEAD^
#如果是退两步
HEAD^^
#如果是退n步
HEAD~n
#重置指针和暂存区
$git reset --mixed HEAD^
或者
$git reset HEAD^
#重置指针,暂存区及工作区
#危险,如果工作区代码没有commit,则再也找不回!!!!!!!
$git reset --hard HEAD^
#重置到指定的提交
#这边需要用到之前的日志查看命令
$git reflog
07876bd (HEAD -> master) HEAD@{0}: commit: 新提交2
b104f55 HEAD@{1}: reset: moving to b104f55
22a101d HEAD@{2}: commit: 新提交
17bd775 (origin/master) HEAD@{3}: reset: moving to HEAD^
0a4a26f HEAD@{4}: reset: moving to HEAD
0a4a26f HEAD@{5}: commit: 提交
17bd775 (origin/master) HEAD@{6}: reset: moving to 17bd775
a45581a HEAD@{7}: revert: Revert 这个提交撤销
17bd775 (origin/master) HEAD@{8}: commit (amend): 忘记提交了代码,否则编译出错
589173d HEAD@{9}: reset: moving to 589173d
b104f55 HEAD@{10}: reset: moving to HEAD
b104f55 HEAD@{11}: commit: 忘记提交了
589173d HEAD@{12}: commit: 提交1
6aa8104 HEAD@{13}: commit: 动了
26364c5 HEAD@{14}: commit: 只是一次测试
4a3753c HEAD@{15}: commit (initial): git测试
#重置到17bd775
$git reset --soft 17bd775
回滚代码
1 | #暴力回滚 |