第2回 | git status で今の状態を見る | Git で最初に身につけたい確認の基本 | UNIX Cafe

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。

第2回 | git status で今の状態を見る | Git で最初に身につけたい確認の基本|UNIX Cafe

Git 入門 | 第2回

Git を使い始めると、すぐに addcommit をしたくなりがちです。でも最初に大事なのは、いきなり操作することではなく、今どんな状態にあるのかを落ち着いて確認することです。

今回は、Git で最初に身につけたい確認の基本として git status を見ていきます。コマンドの出力を読めるようになるだけで、Git の操作がかなり落ち着いてできるようになります。

動画で流れを先に見たい方は、UNIX Cafe の YouTube もあわせてどうぞ。記事と同じく、初心者向けのやさしい流れで、ターミナルの最初の一歩を確認できます。

📝 この記事で学べること

  • git status が教えてくれること
  • 実際の出力パターンと読み方
  • untrackedmodified の違い
  • 初心者がつまずきやすいポイントと対処
  • 迷ったときに git status へ戻る習慣
目次

まず、前回の続きから始めましょう

前回の作業からターミナルを閉じていた場合は、もう一度開いておきましょう。macOS なら「アプリケーション → ユーティリティ → ターミナル」、Ubuntu なら Ctrl+Alt+T で起動できます。

前回は git-practice というフォルダを作り、git init でリポジトリを初期化しました。そして最後に memo.txt というファイルを作ったところで終わりました。今回はその続きから始めます。

まずターミナルで、そのフォルダに移動しておきましょう。

cd git-practice

git status は、リポジトリの中(git init を実行したフォルダの中)にいるときだけ正しく動きます。どこにいるか分からなくなったら、pwd で現在の場所を確認してみましょう。

git status は「今の状態を見る」コマンド

git status は、今の作業ディレクトリがどうなっているかを整理して見せてくれるコマンドです。新しいファイルがあるのか、すでにあるファイルが変わったのか、次に何を考えるべきかの手がかりがここに出ています。

git status

このコマンドは変更の中身を読む道具ではなく、まず全体の状況を把握する道具です。何かする前に必ずここで状態を確認する、という習慣を最初に作っておくと、Git の操作全体がずっと落ち着いてできるようになります。

出力パターンを読む

git status の出力は、状態によって変わります。よく見るパターンを 3 つ確認しておきましょう。前回の作業を続けているなら、まずパターン2の表示が出るはずです。

パターン1|新しいファイルがある状態(untracked)

前回 memo.txt を作った直後に git status を実行すると、次のような表示になります。

なお、On branch master と表示される場合もありますが、main と同じ意味です。環境によって異なるだけなので、気にしなくて大丈夫です。

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        memo.txt

nothing added to commit but untracked files present (use "git add" to track)

Untracked files: の欄に表示されるのは、Git がまだ一度も管理したことのない新しいファイルです。フォルダに存在はしていますが、Git にとっては「まだ知らないファイル」という扱いです。No commits yet は、このリポジトリにまだ何も記録されていないことを意味します。

出力の中に (use "git add <file>..." to include...) というヒントが書かれています。「次は git add を使うといい」という案内ですが、git add については次回詳しく見ていきます。今回はこの表示の意味を読めるようになることが目標です。

パターン2|既存ファイルが変更された状態(modified)

この表示は、過去に一度 commit(記録)したことがあるファイルを編集したときに出てきます。まだコミットを学んでいない段階では、この画面は実際には表示されません。「こういうパターンもある」として読み進めてください。

On branch main
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:   memo.txt

Changes not staged for commit: の欄に表示されるのは、以前に記録(commit)したことがあるファイルに変更が加わった状態です。modified: のあとにファイル名が表示されます。

パターン3|何も変更がない状態

記録が済んで、その後何も変更していない状態では次のように表示されます。作業を始める前や、commit を終えた直後によく見る表示です。

On branch main
nothing to commit, working tree clean

nothing to commit, working tree clean は、記録待ちの変更が何もないきれいな状態です。これが出れば、直前の作業がきちんと記録されていることの確認にもなります。

実際に使ってみると:git add . したのに残る変更がある

git add . を実行すると、「変更されたファイルが全部 add される」と思うかもしれません。けれど、実際に git status を見ると、add されたファイルと、まだ add されていないファイルが分かれて表示されることがあります。

Changes to be committed:
  new file:   sales.csv
  new file:   sato_sales.txt

Changes not staged for commit:
  modified:   ../blog_article.txt
  modified:   ../../UnixCommand_Lesson6_find/blog_article.txt

これは、git add .. が「今いるディレクトリ」を表しているからです。

たとえば sample ディレクトリの中で git add . を実行すると、sample の中にあるファイルは add されます。一方で、../blog_article.txt のように、今いる場所の外側にあるファイルは add されません。

../ は「1つ上の階層」、../../ は「2つ上の階層」を表します。つまり Git は、「変更は見えているけれど、今回の git add . では add されていない」と教えてくれているわけです。

このようなときは、まず git status の表示を落ち着いて読みましょう。Changes to be committed: にあるものは、次の commit に入る予定の変更です。Changes not staged for commit: にあるものは、まだ add されていない変更です。

git add . は「リポジトリ全体を add する」というより、正確には「今いる場所から下の変更を add する」と考えると分かりやすくなります。

なお、いったん add した変更を取り消したい場合は、あとで git restore --staged を使います。この操作は第5回であらためて整理します。

👉 第5回 | git restore で変更を戻す方法と Git 基本ワークフローの総まとめ

慣れてきたら git status –short でも確認できる

git status の表示に少し慣れてきたら、短い形で確認できる git status --short も便利です。

--short は、状態を短く表示するためのオプションです。通常の git status より説明は少なくなりますが、そのぶん今の変更をすばやく確認できます。

A  sales.csv
A  sato_sales.txt
 M ../blog_article.txt

左側の記号を見ると、ファイルの状態が分かります。

  • A は、新しく追加されたファイルが add 済みであることを表します。
  • M は、変更されたファイルを表します。
  • ?? は、Git がまだ管理していない新しいファイルを表します。

たとえば A sales.csv は、sales.csv が次の commit に入る予定であることを表します。一方で M ../blog_article.txt のように、M の前に空白がある場合は、変更はあるけれど、まだ add されていない状態です。

最初のうちは、通常の git status で説明を読みながら確認するのがおすすめです。慣れてきたら git status --short を使うと、作業中の状態をすばやく見られるようになります。

untracked と modified の違い

この 2 つは混同しやすいので、整理しておきます。

表示意味状況
untrackedGit が追跡していないファイル新しく作ったファイルで、まだ一度も記録されていない
modified追跡中のファイルに変更がある過去に記録したファイルを編集した

どちらも「次の記録の候補」ですが、Git から見た扱いが異なります。untracked は Git がまだ知らないファイル、modified は Git が知っているファイルに変化があった状態です。

出力に含まれるヒントを読む

git status の出力には、次の操作のヒントがカッコ書きで含まれています。

出力に含まれるヒント意味
(use "git add <file>..." to include...)このファイルを add すると記録候補になる
(use "git restore <file>..." to discard...)このファイルの変更を取り消せる
(use "git restore --staged <file>..." to unstage)add を取り消せる

最初は英語で読みにくく感じるかもしれませんが、このヒントを見ながら操作を選ぶ習慣をつけると、Git の流れがつかみやすくなります。

初心者がつまずきやすいポイント

git status を実行したらエラーが出た

fatal: not a git repository と表示された場合は、Git で管理されていないフォルダで実行しています。git init でリポジトリを作るか、管理済みのフォルダに移動してから実行しましょう。どこにいるか確認するには pwd が使えます。

untracked のファイルが多すぎて見づらい

不要なファイルが大量に untracked として表示される場合は、.gitignore というファイルを使って Git の追跡から除外できます。ログファイルや一時ファイルなどを除外するために使いますが、入門段階では「そういう仕組みがある」と知っておくだけで十分です。

ファイルを編集したのに status に変化が出ない

ファイルを編集しても、保存を忘れていると Git には変化として見えません。modified が表示されない場合は、まずファイルが保存されているかを確認してみましょう。保存さえされていれば、Git は自動的に変化を検知します。

迷ったら git status に戻る

Git で操作に迷ったとき、まず git status を実行するだけで状況が整理されることがよくあります。「今どのファイルが変わっているか」「次に何をすべきか」を確認する入口として、常にここへ戻る習慣を持っておくと安心です。

Git の操作で困ったときの最初の一手は git status。このひとつだけ覚えておくだけでも、かなり落ち着いて作業を進められるようになります。

次回は git add と git commit を見ていきます

状態が見えるようになったら、次はその変更のうち何を記録したいかを選ぶ段階です。次回は git addgit commit をセットで整理し、変更を選んで履歴として残す流れを確認します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

目次