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 に見てもらう
memo-appというフォルダに、買い物メモのtodo.txtが1つ入っています。いまは、ただのフォルダです。ファイルは、上書きしたら前の中身には戻せません。どこを変えたのかも、あとからは分かりません。
Git は、フォルダの中身をある時点ごとに 写真に撮って残しておく 道具です。この写真を コミット と呼びます。写真が残っていれば、前と見比べることも、前の状態に戻すこともできます。
Claude Code が書き換えた中身を確かめたり、まずかったときに元に戻したりできるのも、この写真があるからです。
まだ Git はこのフォルダを見ていません。
git statusを打っても、not a git repository(Git のリポジトリではない)と断られます。$ git status fatal: not a git repository (or any of the parent directories): .gitgit initで、このフォルダを Git に見てもらうようにします。フォルダの中に、写真をしまう隠しフォルダ.gitができました。これを リポジトリ と呼びます。$ git init Initialized empty Git repository in /Users/you/memo-app/.git/もう一度
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)No commits yetは、写真がまだ1枚も無いという意味です。todo.txtはUntracked files(追跡していないファイル)の下に出ました。Git は、入れるように言われたファイルしか写真に入れません。
git status は、いまのフォルダの状態を確かめるコマンドです。何かをする前と、した後に打ちます。Claude Code の作業ログで一番多く出てくる Git コマンドも、これです。
この画面は、最初のブランチの名前を 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 する
前の場面の続きです。
git initしたフォルダに、まだ写真に入れていないtodo.txtがあります。写真に入れるファイルは、まず ステージ に置きます。ステージは「次の写真に写すもの」を並べておく台です。
git addは、ファイルをステージに写すコマンドです。$ git add todo.txttodo.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.txtgit commitで、ステージの中身を写真に撮ります。-mの後ろは、写真に付けるメモです。root-commitは、最初の1枚という意味です。$ git commit -m "牛乳を追加" [main (root-commit) 98ce262] 牛乳を追加 1 file changed, 1 insertion(+) create mode 100644 todo.txt3つの場所がどれも同じ中身になり、
nothing to commit, working tree cleanと出ました。写真に入れていない変更は無い、片付いた状態です。$ git status On branch main nothing to commit, working tree cleanメモに1行足します。変わるのは、エディタで見えている作業ツリーだけです。
$ echo "卵を買う" >> todo.txt変えたファイルを、また
git addでステージに写します。$ git add todo.txt2枚目の写真を撮ります。グラフの丸が2つになり、線でつながりました。新しい写真は、1つ前の写真を覚えています。
$ git commit -m "卵を追加" [main 181dcf9] 卵を追加 1 file changed, 1 insertion(+)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で、撮った写真を新しい順に一覧できる