sun@salted:git2 (zxvbnm) $ git logls c3d0a48 (HEAD -> zxvbnm, master, cat) first commit sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 无文件要提交,干净的工作区 sun@salted:git2 (zxvbnm) $ vim b.c sun@salted:git2 (zxvbnm) $ git add b.c sun@salted:git2 (zxvbnm) $ git commit -m "create b.c" [zxvbnm 716d221] create b.c 1 file changed, 2 insertions(+) create mode 100644 b.c sun@salted:git2 (zxvbnm) $ git statis git:'statis' 不是一个 git 命令。参见 'git --help'。 sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 无文件要提交,干净的工作区 sun@salted:git2 (zxvbnm) $ git logls 716d221 (HEAD -> zxvbnm) create b.c c3d0a48 (master, cat) first commit sun@salted:git2 (zxvbnm) $ vim c.c sun@salted:git2 (zxvbnm) $ git add c.c sun@salted:git2 (zxvbnm) $ git commit -m "c.c > ^C sun@salted:git2 (zxvbnm) $ git commit -m "c.c" [zxvbnm 3088369] c.c 1 file changed, 2 insertions(+) create mode 100644 c.c sun@salted:git2 (zxvbnm) $ git logls 3088369 (HEAD -> zxvbnm) c.c 716d221 create b.c c3d0a48 (master, cat) first commit sun@salted:git2 (zxvbnm) $ git log --oneline --grapg fatal: 未能识别的参数:--grapg sun@salted:git2 (zxvbnm) $ git log --oneline --graph 3088369 (HEAD -> zxvbnm) c.c 716d221 create b.c c3d0a48 (master, cat) first commit sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 无文件要提交,干净的工作区 sun@salted:git2 (zxvbnm) $ touch d.c sun@salted:git2 (zxvbnm) $ git add d.c sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 要提交的变更: (使用 "git reset HEAD <文件>..." 以取消暂存) 新文件: d.c sun@salted:git2 (zxvbnm) $ git reset HEAD^ --soft sun@salted:git2 (zxvbnm) $ git logls 716d221 (HEAD -> zxvbnm) create b.c c3d0a48 (master, cat) first commit sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 要提交的变更: (使用 "git reset HEAD <文件>..." 以取消暂存) 新文件: c.c 新文件: d.c sun@salted:git2 (zxvbnm) $ ls a.c b.c c.c d.c sun@salted:git2 (zxvbnm) $ git commit -m "new c" [zxvbnm ea29e8a] new c 2 files changed, 2 insertions(+) create mode 100644 c.c create mode 100644 d.c sun@salted:git2 (zxvbnm) $ git reset 716d221 --soft sun@salted:git2 (zxvbnm) $ ls a.c b.c c.c d.c sun@salted:git2 (zxvbnm) $ git logls 716d221 (HEAD -> zxvbnm) create b.c c3d0a48 (master, cat) first commit sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 要提交的变更: (使用 "git reset HEAD <文件>..." 以取消暂存) 新文件: c.c 新文件: d.c sun@salted:git2 (zxvbnm) $ git commit -m "another new c" [zxvbnm fbb61f6] another new c 2 files changed, 2 insertions(+) create mode 100644 c.c create mode 100644 d.c sun@salted:git2 (zxvbnm) $ git reset 716d221 --hard HEAD 现在位于 716d221 create b.c sun@salted:git2 (zxvbnm) $ ll 总用量 16 drwxrwxr-x 3 sun sun 4096 10月 14 13:01 ./ drwxr-xr-x 14 sun sun 4096 10月 13 21:56 ../ -rw-rw-r-- 1 sun sun 0 10月 13 15:49 a.c -rw-rw-r-- 1 sun sun 13 10月 14 12:54 b.c drwxrwxr-x 8 sun sun 4096 10月 14 13:01 .git/ sun@salted:git2 (zxvbnm) $ git status 位于分支 zxvbnm 无文件要提交,干净的工作区
reflog + git reset --hard

将提交视为存档
当下的目录中的文件状态+暂存区内容: 在HEAD存档基础上,正在构建中的下一“存档”(还没有进行提交成为真正的存档)
--hard :完全地切换为某一存档,和某次提交后的状态一模一样
--soft &&默认的mixed :可看做两个操作的组合,
先通过 --hard 完全切换为某个旧的存档;
在旧存档的基础上构建新提交:然后将相对于该存档的修改(包含HEAD之后发生的修改)实际作用在目录及文件上。 暂存区在mixed下被清空,在soft下将所有相对旧存档发生改变的文件加入暂存区,表示下一次要将这些改变进行保存
mixed 与 soft 会将旧存档后的所有修改(包括没提交的)作用在reset到的旧存档上

hard 会将基于HEAD的修改(包括未提交的)也清除掉,完全地恢复为HEAD提交初始的状态
