SYNOPSIS
gitstatus
[<options>] [--
] [<pathspec>…]
DESCRIPTION
インデックスファイルと現在のHEADコミットの間に違いがあるパスや、作業ツリーとインデックスファイルの間に違いがあるパスや、Gitによって追跡されない(かつ gitignore(5) によって無視されない)作業ツリー内のパスを表示します。1つ目は、 git
commit
を実行してコミットすることになるものです。 2番目と3番目は、 git
commit
を実行する前に git
add
を実行することでコミット可能になるものです。
OPTIONS
-
-s
-
--short
-
Give the output in the short-format.
-
-b
-
--branch
-
Show the branch and tracking info even in short-format.
-
--show-stash
-
Show the number of entries currently stashed away.
-
--porcelain
[=
<version>] -
Give the output in an easy-to-parse format for scripts. This is similar to the short output, but will remain stable across Git versions and regardless of user configuration. See below for details.
versionパラメーターは、フォーマットバージョンを指定するために使用されます。 これはオプションであり、デフォルトでオリジナルバージョンの「v1」形式になります。
-
--long
-
Give the output in the long-format. This is the default.
-
-v
-
--verbose
-
In addition to the names of files that have been changed, also show the textual changes that are staged to be committed (i.e., like the output of
git
diff
--cached
). If-v
is specified twice, then also show the changes in the working tree that have not yet been staged (i.e., like the output ofgit
diff
). -
-u
[<mode>] -
--untracked-files
[=
<mode>] -
追跡されていないファイル(untracked files)を表示します。
modeパラメーターは、追跡されていないファイルの処理を指定するために使用されます。 これはオプションです。デフォルトは
all
であり、指定する場合は、オプションに串刺しする必要があります(たとえば、-u
no
ではなく-uno
)。- 可能なオプションは以下のとおりです
-
-
no
-
追跡されていないファイル(untracked files)を表示します。
-
normal
-
追跡されていないファイルとディレクトリを表示します。
-
all
-
追跡されていないディレクトリ内の個々のファイルも表示します。
-
When
-u
option is not used, untracked files and directories are shown (i.e. the same as specifyingnormal
), to help you avoid forgetting to add newly created files. Because it takes extra work to find untracked files in the filesystem, this mode may take some time in a large working tree. Consider enabling untracked cache and split index if supported (seegit
update-index
--untracked-cache
andgit
update-index
--split-index
), Otherwise you can useno
to havegit
status
return more quickly without showing untracked files. All usual spellings for Boolean valuetrue
are taken asnormal
andfalse
asno
.デフォルトは、 git-config(1) に記載されている status.showUntrackedFiles 構成変数を使用して変更できます。
-
--ignore-submodules
[=
<when>] -
Ignore changes to submodules when looking for changes. <when> can be either "none", "untracked", "dirty" or "all", which is the default. Using "none" will consider the submodule modified when it either contains untracked or modified files or its HEAD differs from the commit recorded in the superproject and can be used to override any settings of the ignore option in git-config(1) or gitmodules(5). When "untracked" is used submodules are not considered dirty when they only contain untracked content (but they are still scanned for modified content). Using "dirty" ignores all changes to the work tree of submodules, only changes to the commits stored in the superproject are shown (this was the behavior before 1.7.0). Using "all" hides all changes to submodules (and suppresses the output of submodule summaries when the config option
status.submoduleSummary
is set). -
--ignored
[=
<mode>] -
Show ignored files as well.
modeパラメーターは、無視されたファイル(ignored files)の処理を指定するために使用されます。 これはオプションです。デフォルトは
traditional
です。- 可能なオプションは以下のとおりです
-
-
traditional
-
--untracked-files=all
が指定されていない限り、無視されたファイルとディレクトリを表示します。指定されている場合、無視されたディレクトリ内の個々のファイルが表示されます。 -
no
-
無視されたファイル(ignored files)を表示しません。
-
matching
-
無視パターンにマッチする、無視されたファイルとディレクトリを表示します。
-
matching
モードが指定されている場合、無視されたパターンに明示的にマッチするパスが表示されます。 ディレクトリが無視パターンにマッチする場合、それは表示されますが、無視されたディレクトリに含まれるパスは表示されません。 ディレクトリが無視パターンにマッチしないが、すべてのコンテンツが無視される場合、ディレクトリは表示されませんが、すべてのコンテンツが表示されます。 -
-z
-
Terminate entries with NUL, instead of LF. This implies the
--porcelain=v1
output format if no other format is given. -
--column
[=
<options>] -
--no-column
-
Display untracked files in columns. See configuration variable
column.status
for option syntax.--column
and--no-column
without options are equivalent to always and never respectively. -
--ahead-behind
-
--no-ahead-behind
-
Display or do not display detailed ahead/behind counts for the branch relative to its upstream branch. Defaults to true.
-
--renames
-
--no-renames
-
Turn on/off rename detection regardless of user configuration. See also git-diff(1)
--no-renames
. -
--find-renames
[=
<n>] -
Turn on rename detection, optionally setting the similarity threshold. See also git-diff(1)
--find-renames
. - <pathspec>…
-
gitglossary(7) の「pathspec」エントリを参照してください。
OUTPUT
このコマンドの出力は、コミットテンプレートのコメントとして使用するように設計されています。 デフォルトの長い形式は、人間が読める形式で、冗長で説明的なものになるように設計されています。 その内容と形式は予告なく変更される事があります。
他の多くのGitコマンドとは異なり、出力に記載されているパスは、サブディレクトリで作業している場合、現在のディレクトリを基準にして作成されます(これは、カット&ペーストを支援するための意図的なものです)。 下記 status.relativePaths 構成オプションを参照してください。
Short Format
短い形式では、各パスのステータスがこれらの形式の1つとして表示されます
XY PATH
XY ORIG_PATH -> PATH
ここで、 ORIG_PATH
は、名前が 変更/コピー されたコンテンツの出所です。 ORIG_PATH
は、エントリの名前が変更またはコピーされた場合にのみ表示されます。 XY
は2文字のステータスコードです。
フィールド(-
> を含む)は、単一のスペースで互いに区切られています。 ファイル名に空白またはその他の印刷不可能な文字が含まれている場合、そのフィールドはC文字列リテラルの方法でクォートされます。ASCII二重引用符(34)キャラクタ(")で囲まれ、内部の特殊文字はバックスラッシュ(\)でエスケープされます。
この形式を使用して表示される状態には3つの異なるタイプがあり、それぞれが「XY」構文を異なる方法で使用します:
-
マージが発生していてマージが成功した場合、またはマージ状況以外の場合、
X
はインデックスのステータスを示し、Y
は作業ツリーのステータスを示します。 -
マージの競合が発生し、まだ解決されていない場合、
X
とY
は、共通の祖先と比較して、マージの各ヘッドによって導入された状態を示します。 これらのパスは「unmerged」と言われます。 -
パスが追跡されていない場合、
X
とY
はインデックスで不明(unknown)であるため、常に同一です。 ?? は追跡されていないパスに使用されます。--ignored
が使用されない限り、無視されたファイルはリストされません。--ignored
が使用された場合、無視されたファイルは !! で示されます。
ここでのマージという用語には、デフォルトの `--merge`戦略を使用したリベースや、チェリーピックや、マージ機構を使用したその他のものも含まれることに注意してください。
以下の表では、これら3つのクラスが別々のセクションに示されています。これらの文字は、追跡されたパスを示す最初の2つのセクションの X
フィールドと Y
フィールドに使用されます。
-
" " = 変更されていない
-
M
= 変更された -
T
= ファイル・タイプが変更された(通常ファイル(regular file)またはシンボリック・リンク(symbolic link)またはサブモジュール(submodule)) -
A
= 追加された -
D
= 削除された -
R
= 名前変更された -
C
= コピーされた (構成オプションstatus.renames
がcopies
に設定されている場合) -
U
= 更新されたがマージされていない
X Y Meaning
-------------------------------------------------
[AMD] not updated
M [ MTD] updated in index
T [ MTD] type changed in index
A [ MTD] added to index
D deleted from index
R [ MTD] renamed in index
C [ MTD] copied in index
[MTARC] index and work tree matches
[ MTARC] M work tree changed since index
[ MTARC] T type changed in work tree since index
[ MTARC] D deleted in work tree
R renamed in work tree
C copied in work tree
-------------------------------------------------
D D unmerged, both deleted
A U unmerged, added by us
U D unmerged, deleted by them
U A unmerged, added by them
D U unmerged, deleted by us
A A unmerged, both added
U U unmerged, both modified
-------------------------------------------------
? ? untracked
! ! ignored
-------------------------------------------------
サブモジュールにはより多くの状態があり、代わりのレポートがあります
-
M = the submodule has a different HEAD than recorded in the index
-
m = the submodule has modified content
-
? = the submodule has untracked files
This is since modified content or untracked files in a submodule cannot be added via git
add
in the superproject to prepare a commit.
m
と ? は再帰的に適用されます。 たとえば、サブモジュール内のネストされたサブモジュールに、追跡されていないファイルが含まれている場合、これは同様に ? として報告されます。
-b
が使用されている場合、短い形式のステータスの前に行が表示されます
## branchname tracking info
Porcelain Format Version 1
バージョン 1 の磁器形式(porcelain format)は短い形式に似ていますが、Gitバージョン間またはユーザー構成に基づいて後方互換性のない方法で変更されないことが保証されています。 これにより、スクリプトによる解析に最適です。 上記の短い形式の説明では、いくつかの例外を除いて、磁器形式についても説明しています:
-
ユーザーの color.status 構成は尊重されません。 色は常にオフになります。
-
ユーザーの status.relativePaths 構成は尊重されません。 表示されるパスは、常にリポジトリルートを基準にしています。
機械的パースで推奨される 代替 -z
形式もあります。 この形式では、ステータスフィールドは同じですが、他のいくつかの点が異なります。 まず、名前変更エントリから -
> が省略され、フィールドの順序が逆になります(たとえば、from
-
> to
は to
from
になります)。 次に、 NUL(ASCII 0)が各ファイル名の後に続き、スペースをフィールド区切り文字として置き換え、改行で終了します(ただし、スペースはステータスフィールドを最初のファイル名から分離します)。 第三に、特殊文字を含むファイル名は特別にフォーマットされません。 クォートや、バックスラッシュのエスケープは実行されません。
サブモジュールの変更は、 m
または 単一の ? ではなく、変更された M
として報告されます。
Porcelain Format Version 2
バージョン2形式では、ワークツリーの状態と変更されたアイテムに関するより詳細な情報が追加されます。 バージョン2では、パースが容易なオプションのヘッダーの拡張可能なセットも定義されています。
ヘッダー行は # で始まり、特定のコマンドライン引数に応じて追加されます。 パーサーは、認識できないヘッダーを無視する必要があります。
Branch Headers
--branch
を指定すると、一連のヘッダー行に現在のブランチに関する情報が出力されます。
Line Notes
------------------------------------------------------------
# branch.oid <commit> | (initial) Current commit.
# branch.head <branch> | (detached) Current branch.
# branch.upstream <upstream-branch> If upstream is set.
# branch.ab +<ahead> -<behind> If upstream is set and
the commit is present.
------------------------------------------------------------
Stash Information
--show-stash
が指定された場合に、スタッシュエントリの数が非ゼロの場合、スタッシュ・エントリの数を示す 1 行が出力されます:
# stash <N>
Changed Tracked Entries
ヘッダーに続いて、追跡されたエントリの一連の行が印刷されます。 変更の種類に応じて、3つの異なる行形式のいずれかを使用してエントリを記述することができます。 追跡されたエントリは、未定義の順序で印刷されます。 パーサーは、3つの行タイプを任意の順序で混合できるようにする必要があります。
通常の、変更されたエントリの形式は以下のとおりです:
1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>
名前変更またはコピーされたエントリの形式は以下のとおりです:
2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><score> <path><sep><origPath>
Field Meaning
--------------------------------------------------------
<XY> short formatで記述されたステージされたXY値と
ステージされていないXY値を含む2文字のフィー
ルドで、変更されていない場合は空白
ではなく "." で示されます。
<sub> サブモジュールの状態説明の4文字フィールド。
"N..." when the entry is not a submodule.
"S<c><m><u>" when the entry is a submodule.
<c> is "C" if the commit changed; それ以外 ".".
<m> is "M" if it has tracked changes; それ以外 ".".
<u> is "U" if there are untracked changes; それ以外 ".".
<mH> The octal file mode in HEAD.
<mI> The octal file mode in the index.
<mW> The octal file mode in the worktree.
<hH> The object name in HEAD.
<hI> The object name in the index.
<X><score> The rename or copy score (移動またはコピーのソースと
ターゲット間の類似性のパーセンテージを示します)
例 "R100" or "C75".
<path> The pathname. In a renamed/copied entry, this
is the target path.
<sep> When the `-z` option is used, the 2 pathnames are separated
with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09)
byte separates them.
<origPath> HEADでのコミットまたはインデックス内のパス名。
これは、名前が 変更された/コピーされた エントリに
のみ存在し、名前が変更された/コピーされた
コンテンツがどこから来たかを示します。
--------------------------------------------------------
アンマージエントリの形式は以下のとおりです。 最初の文字は、通常の変更されたエントリと区別するための「u」です。
u <XY> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path>
Field Meaning
--------------------------------------------------------
<XY> A 2 character field describing the conflict type
as described in the short format.
<sub> A 4 character field describing the submodule state
as described above.
<m1> The octal file mode in stage 1.
<m2> The octal file mode in stage 2.
<m3> The octal file mode in stage 3.
<mW> The octal file mode in the worktree.
<h1> The object name in stage 1.
<h2> The object name in stage 2.
<h3> The object name in stage 3.
<path> The pathname.
--------------------------------------------------------
Other Items
追跡されたエントリに続いて(そして要求された場合)、ワークツリーで見つかった追跡されてない項目と無視される項目に対して、一連の行を出力します。
追跡されていないアイテムの形式は以下のとおりです:
? <path>
無視されるアイテムの形式は以下のとおりです:
! <path>
パス名の形式に関する注意と -z
-z
オプションを指定すると、パス名はクォートされずにそのまま出力され、行はNUL(ASCII 0x00)バイトで終了します。
-z
オプションを指定しない場合、構成変数 core.quotePath
で説明されているように、「異常な」文字を含むパス名がクォートされます(git-config(1) を参照)。
CONFIGURATION
このコマンドは、 color.status
(または status.color
— 同じことを意味し、status.color
は下位互換性のために保持されます)と color.status.
<slot> 構成変数を尊重して出力を色付けします。
構成変数 status.relativePaths
がfalseに設定されている場合、表示されるすべてのパスは、現在のディレクトリではなく、リポジトリルートを基準にしています。
status.submoduleSummary
がゼロ以外の数値またはtrue(それぞれ -1 または 無制限の数値 と同じ)に設定されている場合、サブモジュールの概要が長い形式で有効になり、変更されたサブモジュールのコミットの概要が表示されます(git-submodule(1) の --summary-limit
参照)。 diff.ignoreSubmodules
が all
に設定されている場合、または submodule.
<name>.ignore=all
であるサブモジュールに対してのみ、statusコマンドからの要約出力が抑制されることに注意してください。 無視されたサブモジュールの概要も表示するには、 --ignore-submodules=dirty
マンドラインオプションまたは git
submodule
summary
コマンドを使用できます。これは同様の出力を表示しますが、これらの設定を尊重しません。
BACKGROUND REFRESH
デフォルトでは、 git
status
は自動的にインデックスを更新し、作業ツリーからキャッシュされた統計情報を更新し、結果を書き出します。 更新されたインデックスを書き出すことは、厳密には必要ではない最適化です(status
はそれ自体の値を計算しますが、それらを書き出すことは、後続のプログラムが計算を繰り返さないようにするためだけです)。 status
がバックグラウンドで実行されると、書き込み中に保持されたロックが他の同時プロセスと競合し、それらが失敗する可能性があります。 バックグラウンドで status
を実行しているスクリプトは、 git
--no-optional-locks
status
の使用を検討する必要があります(詳細については、 git(1) を参照してください)。
UNTRACKED FILES AND PERFORMANCE
「git status」は、 大規模なワークツリーで非追跡ファイルやディレクトリを検索する必要がある場合、 非常に遅くなる可能性があります。 この処理を回避するか、 あるいは前に実行した Git コマンドによるキャッシュされた結果を利用することで、 この処理を高速化するために利用できる構成オプションが多数あります。 すべての人にとって最適な単一の設定の組み合わせはありません。 あなたの助けになるように、 関連するオプションの概要を以下にリストします。 ただし、 リストする前に、 「git status」を再度実行するとよいでしょう。 これは、あなたの設定がすでに「git status」の結果をキャッシュしている可能性があるため、以降の実行時により高速になる可能性があるためです。
-
The
--untracked-files=no
flag or thestatus.showUntrackedFiles=no
config (see above for both): indicate thatgit
status
should not report untracked files. This is the fastest option.git
status
will not list the untracked files, so you need to be careful to remember if you create any new files and manuallygit
add
them. -
advice.statusUoption=false
(git-config(1) 参照): この変数をfalse
に設定すると、 非追跡ファイルをリストするのに 2 秒以上かかる場合に表示される警告メッセージが無効になります。 大規模なプロジェクトでは、 非追跡ファイルをリストするのにもっと時間がかかりますが、 ユーザーがすでにトレードオフ(例えば-uno
の使用はユーザーにとって受け入れられないオプションである可能性がある)を受け入れているかもしれません。 その場合、警告メッセージを発行しても意味がありません。 そのような場合には、 警告を無効にすることが最善の方法であるかもしれません。 -
core.untrackedCache=true
(git-update-index(1) 参照): 非追跡のキャッシュ機能を有効にし、 前の「git status」コマンド以降に変更されたディレクトリのみを検索します。 Git は各ディレクトリ内の非追跡ファイルの組を記憶しており、 ディレクトリが変更されていない場合、 その中の非追跡ファイルの組は変更されていないと想定します。 これは、 すべてのディレクトリの内容をリストするよりもはるかに高速ですが、 それでも Git は変更されたディレクトリの組を検索する必要があるため、 コストがかかります。 非追跡のキャッシュは.git/index
ファイルに保存されます。 非追跡ファイルの検索コストの削減は、 インデックスのサイズの増加とインデックスを最新の状態に保つコストによってわずかに相殺されます。 通常は検索時間の短縮の為に、 このサイズ追加を行う価値があります。 -
core.untrackedCache=true
andcore.fsmonitor=true
orcore.fsmonitor=
<hook-command-pathname> (see git-update-index(1)): enable both the untracked cache and FSMonitor features and only search directories that have been modified since the previousgit
status
command. This is faster than using just the untracked cache alone because Git can also avoid searching for modified directories. Git only has to enumerate the exact set of directories that have changed recently. While the FSMonitor feature can be enabled without the untracked cache, the benefits are greatly reduced in that case.
非追跡のキャッシュや FSMonitor 機能をオンにした後、 コマンド実行時間が改善されるまで、 さまざまなキャッシュをウォームアップするために、いくつかの「git status」コマンドが必要になる場合があることに注意してください。 これは正常な動作です。
SEE ALSO
GIT
Part of the git(1) suite