嗯,这是去年 lttxzmj 初学 Git 的时候写给她的小纸条。两年没写博客了,发出来充个数…
有哪些状态
- untracked
- 版本库里以前不存在,现在新增加且还没有 git add 过的文件
- unstaged
- 版本库里以前存在,现在修改了但没有 git add 的文件
- staged
- 所有 git add 过的文件,可以是:
- 版本库里以前不存在,现在新增且 git add 了的文件,
- 也可以是版本库里以前存在,现在修改了且 git add 了的文件
当然还有针对 merge / rebase / cherry-pick 时的一些中间状态存在, 例如 both modified 状态。初学的时候可以不必关注。
提交的是什么
下次 git commit 的时候,提交的是 staged 状态的修改。
同一个文件可能同时有两部分修改,一部分是 staged 状态,另一部分是 unstaged 状态。其中 unstaged 状态是上次 git add 之后作出的还没有再次 git add 的修改。
怎么查看修改
- git diff 可以看到 unstaged 的修改
- git diff --cached 可以看到 staged 的修改
- untracked 的修改无法通过原生 Git 命令看到
tig 是一个拥有终端 GUI 的 Git 历史查看工具, 其中可以看到 untracked 状态的修改。