git status -s(–short)オプションの使い方を実例で解説|冒頭のアルファベットや記号A, M, D, ?, U, !, C, R, AD, AM, ??, MM, UUとは何か?意味は?

git-prograshi(プロぐらし)-kv git/github
記事内に広告が含まれていることがあります。

Gitで頻繁に使用するコマンドの一つに「git status」があります。

git statusはコミットする前に、ステージ前やステージ後の差分のあるファイルを確認するコマンドです。

git statusのオプションに「-s」オプション(または –short)があります。

このオプションを使うと、表示される内容がかなりシンプルになりますが、同時に冒頭によくわからないアルファベットや記号が1文字あるいは2文字追加されます。

A, M, D, ?, U, !, C, R, AD, AM, ??, MM, UUといったものです。

ここではgit status -sとは何か?やその使い方、各アルファベットの意味や見方についてまとめています。


git statusの-sオプションとは何か?(–shortオプション)とは何か?

git statusのオプションに「-s」オプション(または –short)は、shortという名前が示すように、ステージ前のファイルやステージ後のファイルなどの変更内容を端的に表示するコマンドです。

通常のgit statusだとかなり長い表示になりますが、「-s」オプション(または –short)を使うことでかなり短い表示になります。


実例

オプションをつけないgit status

通常のgit statusは以下のようになります。

$ git status
On branch test
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   src/App.vue

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   src/components/HelloWorld.vue
        modified:   src/components/UserDetail.vue


-s(–short)オプションを付けた場合

-sオプションを付けて、git status -sを実行する以下のようになります。

$ git status -s
M  src/App.vue
 M src/components/HelloWorld.vue
 M src/components/UserDetail.vue

なお–shortで表示される内容も全く同じです。

$ git status --short
M  src/App.vue
 M src/components/HelloWorld.vue
 M src/components/UserDetail.vue

上記の例であれば、記号はMのみですが、一番上のファイルと下2つのファイルでMの位置がずれていることに注目してください

VSCodeの場合以下のようにカラフルな大文字のアルファベットで表示されます。

その際、M以外にも、A、D、R、CやAD、AMといった表記があります

image.png

各ファイル毎に表示され、ファイルの状態が一目でわかるようになっていますが、冒頭のアルファベットの意味を理解していないとよくわからないことになってしまいます。


冒頭のアルファベットが意味していること

変更があった各ファイルの冒頭には1つあるいは2つのアルファベットがつきます。

XY」という構造です。これは以下の意味になります。

基本構造

・右側(Y)がステージ前(git add前)の状態
・左側(X)がステージ後、コミット前の状態

なお、git add前後の関係は以下のようになります。

ローカルレポジトリ 
    ↑ commit
ステージ(インデックス)【←左側】
    ↑ add
ワークツリー 【←右側】

VSCodeの場合、分かりやすいように色分けされています。

・赤色:add前(ステージ前)
・緑色:add済み(コミット前)


各アルファベットの意味

表示される各アルファベットはそれぞれ個別の意味を持っています。頻出するのは、A、M、D、?の4つです。

Uはコンフリクトが発生したときに表示されます。

アルファベット単語意味
Aadded新規ファイル。gitが新規に追跡したファイル
Mmodified変更があったファイル
Ddeleted削除されたファイル
Rrenamed名前変更
Ccopiedコピー
Uunmergedマージしていない
?untracked未追跡。gitが認識していない。
!ignored無視


状態一覧

ステージ前とステージ後の組み合わせで表示される内容をまとめると以下のようになります。

基本構造

「XY」

  • 右側(Y)がステージ前(git add前)の状態
  • 左側(X)がステージ後、コミット前の状態
XY意味
??gitが認識していない。新規作成し、git add前のファイル。
M変更したが、git addしてないファイル
A新規作成し、git addされたファイル。コミット前
MM変更しgit addした後に、また変更したファイル(add前)。
Dgit認識済みのファイルが削除された。(add前)
Dステージのファイルが削除された(add後、commit前)
ADステージに追加したファイル(A)が消され、addしてない状態。
UUコンフリクト。それぞれのブランチで変更されている
AAコンフリクト。それぞれのブランチで新たに追加されている

なお上記以外にもあります。

詳細はgit公式のgit stateコマンドページ参照ください。

タイトルとURLをコピーしました