Git は何をするものか — init・add・commit

Git は、フォルダの中身をある時点ごとに写真に撮って残しておく道具です。この回では、まだ何も管理していないフォルダに git init を打つところから始めて、git add と git commit で最初の写真を撮るまでを、1コマンドずつ見ていきます。

画面の見方
  • 上のターミナルは、実際に打ったときの出力です(Git は英語で答えます)
  • 下の中で起きていることは、コマンドの結果、Git の中の何が変わったかを図にしたものです。丸がコミット、黒い札がブランチ、ピンクの札が HEAD です
  • 右の説明をスクロールして読み進めると、左のターミナルでコマンドが1つずつ打たれます。→ キーでも1つずつ進みます(← で1つ戻ります。スマホでは「次へ」ボタン)。最後まで進んでから → を押すと次の区間へ移ります。黄色く光っているのが、そのコマンドで変わった場所です

1. Git は何をするものか

ふつうのファイルは、上書きしたら前の中身には戻せません。どこを変えたのかも、あとからは分かりません。

Git は、フォルダの中身を「この時点ではこうだった」という写真にして残します。この写真をコミットと呼び、写真をしまっておく場所をリポジトリと呼びます。写真が残っていれば、次のことができます。

  • 前の写真と今を見比べて、どこを変えたかを確かめる
  • まずい変更をしたときに、前の写真の状態に戻す
  • 写真に付けたメモを並べて、いつ・何をしたかの記録として読む

Claude Code に作業を任せるときも同じです。Claude Code が書き換えた中身を確かめたり、まずかったときに戻したりできるのは、Git の写真があるからです。この講座で見ていく git status や git diff は、その写真と今のファイルを見比べるコマンドです。

2. git init — フォルダを Git に見てもらう

Git は、言われるまでフォルダを見ていません。git init を打つと、フォルダの中に隠しフォルダ .git ができ、そこに写真をしまうようになります。この時点では、写真はまだ1枚もありません。

git init — フォルダを Git に見てもらう

  1. memo-app というフォルダに、買い物メモの todo.txt が1つ入っています。いまは、ただのフォルダです。

  2. ファイルは、上書きしたら前の中身には戻せません。どこを変えたのかも、あとからは分かりません。

  3. Git は、フォルダの中身をある時点ごとに 写真に撮って残しておく 道具です。この写真を コミット と呼びます。写真が残っていれば、前と見比べることも、前の状態に戻すこともできます。

  4. Claude Code が書き換えた中身を確かめたり、まずかったときに元に戻したりできるのも、この写真があるからです。

  5. まだ Git はこのフォルダを見ていません。git status を打っても、not a git repository(Git のリポジトリではない)と断られます。

    $ git status
    fatal: not a git repository (or any of the parent directories): .git
  6. git init で、このフォルダを Git に見てもらうようにします。フォルダの中に、写真をしまう隠しフォルダ .git ができました。これを リポジトリ と呼びます。

    $ git init
    Initialized empty Git repository in /Users/you/memo-app/.git/
  7. もう一度 git status を打ちます。git status は、いまのフォルダの状態を確かめる コマンドです。まだ写真に入っていないものは何かを教えてくれます。

    $ git status
    On branch main
    
    No commits yet
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    	todo.txt
    
    nothing added to commit but untracked files present (use "git add" to track)
  8. No commits yet は、写真がまだ1枚も無いという意味です。todo.txt は Untracked files(追跡していないファイル)の下に出ました。Git は、入れるように言われたファイルしか写真に入れません。

git status は、いまのフォルダの状態を確かめるコマンドです。何かをする前と、した後に打ちます。Claude Code の作業ログで一番多く出てくる Git コマンドも、これです。

最初のブランチの名前が master になるとき

この画面は、最初のブランチの名前を main にする設定(git config --global init.defaultBranch main)をしてある状態です。設定していないと、git init のあとに hint: で始まる英語の案内が10行ほど出て、ブランチの名前が master になります。どちらでも動きは同じです。名前の違いは1-3 ブランチと HEADで扱います。

3. 最初のコミット — add してから commit する

写真を撮るには2つの手順を踏みます。まず git add で、写真に入れるファイルをステージ(次の写真に写すものを並べておく台)に置きます。次に git commit で、ステージに並べたものを写真に撮ります。

最初のコミット — add してから commit する

  1. 前の場面の続きです。git init したフォルダに、まだ写真に入れていない todo.txt があります。

  2. 写真に入れるファイルは、まず ステージ に置きます。ステージは「次の写真に写すもの」を並べておく台です。git add は、ファイルをステージに写すコマンドです。

    $ git add todo.txt
  3. todo.txt が緑の Changes to be committed の下に移りました。次の写真に入る、という意味です。

    $ git status
    On branch main
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
    	new file:   todo.txt
    
  4. git commit で、ステージの中身を写真に撮ります。-m の後ろは、写真に付けるメモです。root-commit は、最初の1枚という意味です。

    $ git commit -m "牛乳を追加"
    [main (root-commit) 98ce262] 牛乳を追加
     1 file changed, 1 insertion(+)
     create mode 100644 todo.txt
  5. 3つの場所がどれも同じ中身になり、nothing to commit, working tree clean と出ました。写真に入れていない変更は無い、片付いた状態です。

    $ git status
    On branch main
    nothing to commit, working tree clean
  6. メモに1行足します。変わるのは、エディタで見えている作業ツリーだけです。

    $ echo "卵を買う" >> todo.txt
  7. 変えたファイルを、また git add でステージに写します。

    $ git add todo.txt
  8. 2枚目の写真を撮ります。グラフの丸が2つになり、線でつながりました。新しい写真は、1つ前の写真を覚えています。

    $ git commit -m "卵を追加"
    [main 181dcf9] 卵を追加
     1 file changed, 1 insertion(+)
  9. git log は、撮った写真の一覧です。新しい順に、ID とメモが並びます。次の回からは、この3つの場所と写真の動きを、1コマンドずつ詳しく見ていきます。

    $ git log --oneline
    181dcf9 (HEAD -> main) 卵を追加
    98ce262 牛乳を追加

ファイルは、エディタで見えている作業ツリー、写真に入れる前のステージ、撮った写真のコミットの3つの場所を行き来します。次の回では、この3つの場所の違いを、git status の赤と緑の読み方と合わせて詳しく見ます。

4. Claude Code の許可画面で見かけたら

コマンド何が起きるか消えうるもの
git status / git log見るだけなし
git init今のフォルダに .git を作り、Git に見てもらうようにする。すでにリポジトリなら、何も消さずにそのまま注意 消えるものはないが、ホームフォルダなど意図しない場所で打つと、その下の全部が Git の管理対象になる
git add ファイルファイルをステージに置くなし
git commit -m "メモ"ステージの中身で写真を1枚足すなし

git init は、どのフォルダで打つのかだけを確かめてください。cd フォルダ && git init の形なら、cd の行き先を見ます。

まとめ

  • Git は、フォルダの中身をある時点ごとに写真(コミット)に撮って残す道具。写真があるから、見比べることも戻すこともできる
  • git init で、フォルダを Git に見てもらうようにする。写真をしまう場所がリポジトリ(.git)
  • git status は、今の状態を確かめるコマンド。No commits yet は写真がまだ無い、Untracked files は Git がまだ追跡していないファイル
  • 写真を撮る手順は、git add でステージに置いてから git commit
  • git log --oneline で、撮った写真を新しい順に一覧できる