三浦ノート

自分の経験したことを検索可能にしていくブログ.誰かの役に立ってくれれば嬉しいです.

Gitのファイルステータスまとめ

とあるファイルについて、git statusで表示される状態と、実際のファイルの状態(存在性,内容)の対応を表にしてみる。

その都度考えれば分かることではあるが、まとめると何かに便利かも。。。

言葉や記号の定義は下のセクションに述べる。

                                                                                                                                                       
status作業ディレクトリインデックスHEAD
Untracked×
trackedUnstagedmodified◯'
deleted×
stagednew file×
modified◯'
deleted×

renamed ステータスについては詳しくはよくわかってないので表には書かなかった。おそらくtreeオブジェクトが変更されたことを表すのではないかと想像する。

定義

git statusChanges to be committed:に表示される状態をstagedChanges not staged for commit:に表示される状態をUnstagedと呼ぶことにする。

以下の記号を使う。

各領域(作業ディレクトリ、インデックス、HEADコミット)にファイルか存在するかどうか 記号
存在
不在 ×
存在して、' 無しの◯と内容に差異あり ◯'
存在不在問わない

特徴

  • 作業ディレクトリとインデックスの比較によってUnstagedなステータスが決まる
  • インデックスとHEADの比較によってstagedなステータスが決まる
  • Untrackedファイルをaddするとstaged new fileになるので、Unsteged new fileというステータスは無い。

status 作業ディレクトリ インデックス HEAD
Unstaged modified, staged modifide ◯’’ ◯’
Unstede deleted, staged new file × ×
staged deleted × ×
staged modified ◯' ◯'
clean
clean × × ×
Untracked, staged deleted ×

参考

2.2 Git の基本 - 変更内容のリポジトリへの記録