git reset [-q] [<tree-ish>] [--] <pathspec>… git reset [-q] [--pathspec-from-file=<file> [--pathspec-file-nul]] [<tree-ish>] git reset (--patch | -p) [<tree-ish>] [--] [<pathspec>…] git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [<commit>] DEPRECATED: git reset [-q] [--stdin [-z]] [<tree-ish>]
<mode>
] [<commit>
]重置到某提交,<mode>
可以是--soft
,--mixed
,--hard
,--merge
,--keep
,<commit>
默认HEAD
,可以是任意commit
的哈希值。
# 默认,reset index(重置整个暂存区) # 等价于git reset --mixed HEAD git reset # undo commit(重置仓库区到前一个提交) # soft(轻度的) git reset --soft HEAD~1 # undo commit(重置仓库区到前一个提交),reset index(重置整个暂存区) # mixed(适度的) git reset --mixed HEAD~1 # undo commit(重置仓库区到前一个提交),reset index(重置整个暂存区),reset workspace(重置整个工作区) # hard(重度的) # 不使用或谨慎使用! git reset --hard HEAD~1
# 仓库区 commit3: 添加 c.txt commit2: 添加 b.txt commit1: 添加 a.txt # 暂存区 c.txt: 第一行修改 b.txt: 第一行修改 # 工作区 c.txt: 第二行修改 a.txt: 第一行修改
git reset --soft HEAD~1
# 仓库区 commit2: 添加 b.txt commit1: 添加 a.txt # 暂存区 c.txt: 第一行修改 b.txt: 第一行修改 # 工作区 c.txt: 第二行修改 a.txt: 第一行修改
git reset --mixed HEAD~1
# 仓库区 commit2: 添加 b.txt commit1: 添加 a.txt # 暂存区 # 工作区 c.txt: 第一行、第二行修改 b.txt: 第一行修改 a.txt: 第一行修改
git reset --hard HEAD~1
# 仓库区 commit2: 添加 b.txt commit1: 添加 a.txt # 暂存区 # 工作区