无知的 TonySeek

Yet Another Seeker

Git 中的状态

嗯,这是去年 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 状态的修改。

Git

Comments