Git の基本 | git status
git status コマンド
git status は、作業ディレクトリの状態とステージングされたスナップショットの状態を表示するコマンドである。このコマンドを実行すると、ステージング済みの変更、ステージングされていない変更、Git の追跡対象外のファイルが表示される。この状態出力には、コミット済み履歴に関する情報は含まれない。コミット済み履歴を確認する必要がある場合は、git log コマンドを使用する。
使い方
git status
ステージング済みファイル、ステージングされていないファイル、追跡されていないファイルを一覧表示する。
補足説明
git status は比較的単純なコマンドである。このコマンドは git add と git commit を実行した結果を確認するだけである。状態情報には、ステージング済みファイルとステージングされていないファイルに関する情報も表示される。以下の出力例では、git status を実行したときに表示される 3 つの主要なカテゴリが示されている。
# On branch master
# Changes to be committed:
# (use "git reset HEAD ..." to unstage)
#
# modified: hello.py
#
# Changes not staged for commit:
# (use "git add ..." to update what will be committed)
# (use "git checkout -- ..." to discard changes in working directory)
#
# modified: main.py
#
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# hello.pyc
.gitignore で表示対象からファイルを除外する
追跡されていないファイルには、通常 2 種類ある。1 つはプロジェクトに追加された直後で、まだ一度もステージングされていないファイルである。もう 1 つは .pyc、.obj、.exe などの拡張子を持つコンパイル済みバイナリファイルである。前者が git status の出力に含まれるのは有用だが、後者は作業ディレクトリの状態把握を妨げることがある。
このため Git では、.gitignore という特殊なファイルを作成して、表示対象からファイルを除外できる。除外するファイルは 1 行に 1 つずつ記述し、ワイルドカードとして * 記号を使用できる。たとえば、プロジェクトルートにある .gitignore ファイルへ次の行を追加すると、コンパイル済み Python モジュールを git status の表示対象から除外できる。
*.pyc
使用例
変更内容をコミットする前にリポジトリの状態を確認することは、意図しないコミットを防ぐためのよい習慣である。この例では、スナップショットのステージング前後とコミット前後のリポジトリ状態を表示する。
# Edit hello.py
git status
# hello.py is listed under "Changes not staged for commit"
git add hello.py
git status
# hello.py is listed under "Changes to be committed"
git commit
git status
# nothing to commit (working directory clean)
最初の状態出力では、ファイルがステージングされていないものとして表示される。git add を実行した結果が 2 回目の git status に反映され、最後の状態出力ではコミットするファイルが何も残っていないことが示される。つまり、作業ディレクトリの状態は直前のコミット結果と一致している。Git には、変更の誤った上書きを防ぐため、作業ディレクトリがクリーンな状態でなければ使用できないコマンドがある。たとえば git merge がそうである。