Git と GitHub 入門版 0.5.16(ドラフト) ・ 2026-10-24 ・ 作成者 chitchi1216

第3章 / 目安 60〜80分

Git の基本:記録をつくる

この章でできるようになること

3-1. Git は「変更の記録を残す道具」

第0章で、Git は「ファイルの変更履歴を記録する道具」と説明しました。まず、身近な場面から考えてみます。職場の共有フォルダで、みんなで同じファイルを編集したことはありませんか? そのとき、こんな困りごとが起きがちです。

共有フォルダで、よくある困りごとGit を使うと
誰かが上書き保存して、自分が直した部分が消えていた保存のたびの「記録」が残るので、消える前の状態を取り出せる(第5章)。ほかの人と作業するときは、お互いの変更をまとめる仕組みがある(第7章以降)
いつの間にか内容が変わっていて、誰が、なぜ変えたのか分からない記録に「いつ・誰が・何を・なぜ」が残る(この章の git log)
「先週の版に戻したい」と思っても、古い版が残っていない記録した時点なら、いつでも戻せる(第5章)
念のためのコピーが増えて、どれが最新か分からないファイルは1つのまま。古い版は、Git が裏で覚えている

まとめると、Git は、こんな場面で役に立ちます。

この章では、まず一人で、Git の基本の流れを体験します。

この章で使う言葉

言葉意味
リポジトリ(repository)Git が記録を保管する「倉庫」。フォルダの中の .git という隠しフォルダに作られる
コミット(commit)変更を「ひとまとまりの記録」として、リポジトリに保存すること。また、その記録そのもの
履歴コミットの一覧。「いつ・誰が・何を変えたか」の並び
ステージ次のコミットに入れる変更を、並べておく場所

3-2. 3つの場所:作業フォルダ・ステージ・リポジトリ

Git を理解する一番の近道は、ファイルがいる「3つの場所」を知ることです。

作業フォルダ いま、ファイルを 編集している場所 (ふつうのフォルダ) ステージ 次の記録に入れる 変更を並べる場所 (準備中の置き場) リポジトリ 記録(履歴)を しまっておく倉庫 (.git フォルダ) add commit 写真にたとえると… みんなが自由に動く 写る人を、並ばせる 撮影して、アルバムへ
変更は、add でステージに並べ、commit でリポジトリに記録する
なぜ、2段階(add と commit)なの? いくつかのファイルを変更したとき、「どの変更を、ひとつの記録にまとめるか」を選べるようにするためです。たとえば、3つのファイルを変更しても、関係のある2つだけを add して、1つの記録にできます。写真で「写る人だけを並ばせてから、シャッターを押す」のと同じです。
☕ ここで一区切りしてOK 次は「3-3. 実際にやってみよう」からです。

3-3. 実際にやってみよう

練習用のフォルダ my-notes を作り、Git で管理します。場所は、学習用フォルダ C:\work の中です(OneDrive の外)。

打つ前に確認

手順1:準備する

PowerShell を開き、学習用フォルダに移動します。次に、Git が使えるか確認します。

cd C:\work
git --version
PS C:\work> git --version
git version 2.xx.x.windows.1

git version … と表示されれば OK です(数字は、人によって違います)。表示されないときは、第0章の「うまくいかないとき」を見てください。

次に、これから作るリポジトリの「最初の枝の名前」を main にする設定をします。この設定は、一度だけで大丈夫です。

git config --global init.defaultBranch main

💡 「枝(ブランチ)」は第6章で学びます。今は、「GitHub の標準に、名前をそろえる設定」と思ってください。

手順2:フォルダを作って、リポジトリにする

mkdir my-notes
cd my-notes
git init
PS C:\work> mkdir my-notes
PS C:\work> cd my-notes
PS C:\work\my-notes> git init
Initialized empty Git repository in C:/work/my-notes/.git/

「空の Git リポジトリを作りました」という意味です。これで、my-notes フォルダが、Git の管理対象になりました。

💡 init は initialize(初期化する)の略です。

git init は、場所を確かめてから git init は、今いるフォルダを、Git の管理対象にします。C:\work や、ユーザーフォルダのような「大きな場所」で打つと、その中のすべてのフォルダが対象になってしまいます。必ず、プロンプトで場所を確認してから打ってください。また、git init は、フォルダごとに1回だけです。

手順3:状態を確認する

git status
PS C:\work\my-notes> git status
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)

git status は、「今、どういう状態か」を教えてくれるコマンドです。Git を使うときは、迷ったらまず git status を打ちます。何度打っても、安全です。

💡 status は「状態」という意味です。

英語の表示日本語で表示される環境での例意味
On branch mainブランチ main など今、main という枝にいる
No commits yetまだコミットがありません記録が、まだ1つもない
Untracked files追跡されていないファイルGit が、まだ記録の対象にしていないファイル
Changes to be committedコミット予定の変更 などステージに並んでいる(次のコミットに入る)変更
Changes not staged for commitコミットのためにステージされていない変更 など変更したが、まだステージに並べていない
nothing to commit, working tree cleanコミットするものはありません など記録していない変更は、ない

手順4:ファイルを作る

第2章で学んだ方法で、空のファイルを作り、メモ帳で開いて書きます。

New-Item hello.txt
notepad hello.txt

メモ帳が開いたら、hello git と書き、最後に Enter で改行して保存(Ctrl + S)、メモ帳を閉じます。もう一度、状態を見ます。

git status
PS C:\work\my-notes> git status
On branch main

No commits yet

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

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

Untracked files(追跡されていないファイル)に、hello.txt が出ました。「新しいファイルがあるけれど、まだ記録の対象にしていないよ」という意味です。親切に、次にすることも教えてくれています(use "git add" to track)。

手順5:ステージに並べる(add)

git add hello.txt
git status
PS C:\work\my-notes> git add hello.txt
PS C:\work\my-notes> git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt

表示が、Changes to be committed(コミットされる変更)に変わりました。hello.txt がステージに並んだのです。まだ記録はされていません。

💡 add は「追加する」。ステージに、追加します。

手順6:記録する(commit)

git commit -m "Add hello.txt"
PS C:\work\my-notes> git commit -m "Add hello.txt"
[main (root-commit) 3f2a9c1] Add hello.txt
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

これが、最初のコミット(記録)です。-m のあとの " " の中は、「何をしたか」を書くメッセージです。あとで履歴を見たとき、このメッセージで内容が分かります。

💡 commit は「約束する」「確定する」という意味です。変更を、記録として確定します。-m は message(メッセージ)の頭文字です。

メッセージは、まず英語(半角)で この章では、メッセージを英語で書きます。日本語のメッセージも、多くの環境では、そのまま使えて、正しく表示されます(チャレンジ3で試します)。ただし、環境によっては、表示だけ文字化けすることがあります(記録そのものは壊れません)。
-m を付け忘れると -m を付けずに、git commit "メッセージ" と打つと、次のエラーになります。
PS C:\work\my-notes> git commit "testcommit"
error: pathspec 'testcommit' did not match any file(s) known to git
「testcommit というファイルは、見つかりません」という意味です。Git は、-m がないと、メッセージをファイルの名前だと思ってしまいます。git commit -m "メッセージ" と、メッセージの前に -m を付けて、打ち直してください。
-m なしで git commit したときに開く、メモ帳の COMMIT_EDITMSG の画面
-m なしで git commit を打つと、メモ帳が開く(ファイル名は COMMIT_EDITMSG)。1行目にメッセージを書いて、保存して閉じる。(メールアドレスは、黒く塗りつぶしてあります)
メモ帳が開いているときの、表示について
「Committer: … configured automatically」と出たら コミットのあとに、次のような警告が出ることがあります。
 Committer: (あなたの名前) <(ユーザー名@パソコン名.local)>
Your name and email address were configured automatically
based on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com
「名前とメールアドレスが、自動で設定されました。正しいか確認してください」という意味です。第0章の user.name と user.email の設定が、足りていません。よくあるのは、user.email を設定していない場合、user.name に、メールアドレスを入れてしまった場合です。git config --global --list で確かめて、第0章 0-10 の手順で、設定し直してください。
すでに作ったコミットの名前は、変わりません。練習用なので、そのまま続けて構いません(直したいときは、次のコミットから、正しい名前になります)。
「Please tell me who you are」と出たら 環境によっては、警告ではなく、「あなたは誰ですか?」というエラーで、コミットが止まることもあります。この場合も、第0章 0-10 の設定が必要です。設定してから、もう一度 git commit を打ってください。
「LF will be replaced by CRLF」と出ても、気にしない 改行の種類(Windows と Mac / Linux で違う)についての、お知らせです。Git for Windows は、初期設定で、改行を自動で調整する設定(core.autocrlf=true)になっています。この警告は、出ない場合もあります。どちらでも、この教材では、気にしなくて構いません。

手順7:履歴を見る(log)

git log
PS C:\work\my-notes> git log
commit 3f2a9c1e5b7d4a8c0f6e2b9d1a3c5e7f8b0d4a6c (HEAD -> main)
Author: chitchi1216 <chitchi1216@example.com>
Date:   Sun Oct 11 10:45:12 2026 +0900

    Add hello.txt

記録の一覧が出ます。1つの記録(コミット)には、次の情報が入っています。

項目意味
commit 3f2a9c1e…この記録のID(長い英数字)。世界中で、重ならない番号。先頭の7文字ほどで、区別できる
(HEAD -> main)「今、ここにいる」という目印。main の、いちばん新しい記録
Author記録した人(第0章で設定した名前とメール)
Date記録した日時
最後の行コミットのときに書いた、メッセージ
画面が止まって、「:」や「(END)」と出たら q を押す 記録が多いと、一度に表示しきれず、画面が止まったように見えます。慌てず、キーボードの q を押すと、元の画面に戻ります。↑ ↓ で、スクロールもできます。

💡 log は「記録(ログ)」という意味です。

--oneline の、ハイフンは2つ git log --oneline の、oneline の前のハイフンは、2つです。git log -oneline(1つ)と打つと、fatal: unrecognized argument: -oneline(認識できない引数)というエラーになります。エラーが出たら、↑ キーで直して、打ち直してください。
☕ ここで一区切りしてOK 次は「手順8:もう一度、変更して、記録する」からです。再開するときは、PowerShell を開き、cd C:\work\my-notes で戻ってから、始めてください。

手順8:もう一度、変更して、記録する

Git の本領は、「変更を重ねて記録する」ところです。hello.txt に、1行足してみましょう。

notepad hello.txt

second line と1行足して、最後に Enter で改行して保存し、メモ帳を閉じます。そして、状態と、変更の中身を見ます。

git status
git diff
PS C:\work\my-notes> git status
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:   hello.txt

no changes added to commit (use "git add" and/or "git commit -a")
PS C:\work\my-notes> git diff
diff --git a/hello.txt b/hello.txt
index 3b18e51..a1b2c3d 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1,2 @@
 hello git
+second line

modified(変更された)と出ました。git diff は、「前の記録から、何が変わったか」を見せてくれます。+ が付いた行が、足された行です(消された行は - で表示されます)。

💡 diff は difference(違い、差分)の略です。

変更を、ステージに並べて、記録します。

git add hello.txt
git commit -m "Add second line to hello.txt"
git log --oneline
PS C:\work\my-notes> git add hello.txt
PS C:\work\my-notes> git commit -m "Add second line to hello.txt"
[main 7b1e4d8] Add second line to hello.txt
 1 file changed, 1 insertion(+)
PS C:\work\my-notes> git log --oneline
7b1e4d8 (HEAD -> main) Add second line to hello.txt
3f2a9c1 Add hello.txt

--oneline を付けると、1つの記録を1行で表示します。履歴が長くなったとき、全体を見渡すのに便利です。記録が、2つに増えました。

3f2a9c1 Add hello.txt 7b1e4d8 Add second line to hello.txt 時間 古い記録 いちばん新しい記録(HEAD → main)
コミットは、時間順に連なる。この連なりが「履歴」

ここまでの流れ(まとめ)

  1. ファイルを作る・変える(メモ帳など)
  2. git status で、状態を確かめる
  3. git add ファイル名 で、ステージに並べる
  4. git commit -m "メッセージ" で、記録する
  5. git log --oneline で、履歴を見る

この「変える → add → commit」が、Git の基本のくり返しです。

☕ コーヒーブレイク:Git は、誰が、何のために作ったの?(読み飛ばしてOK)

Git は、2005年に、Linux カーネル(世界中で使われている OS の中心部分)を開発するために、リーナス・トーバルズ(Linus Torvalds)が作りました。Linux の開発には、世界中の何千人もが関わっています。「大勢が、同時に、同じファイルを変更しても、混乱しない」仕組みが、どうしても必要だったのです。

Git が速く、大きなプロジェクトにも強いのは、そうした厳しい使い方を前提に作られたからです。今では、Linux だけでなく、世界中の、ほとんどのソフトウェア開発で使われています。

「git」という名前の由来は、英語の俗語で「いやなやつ」「つまらないやつ」といった意味だとされています。作者が、自分のことを冗談めかして呼んだ名前だ、という話が有名です。

※ 経緯や由来には、諸説あります。詳しく知りたい人は「Git の歴史」「Linus Torvalds Git」で調べてみてください。

3-4. チャレンジ

必須ではありません。気軽に挑戦してください。C:\work\my-notes にいる状態で始めます。

🎯 チャレンジ1 ★☆☆ .git の中を、のぞいてみる

.git は隠しフォルダなので、ふつうの ls では見えません。隠しフォルダも含めて一覧を表示し、.git の中身と、.git の中の HEAD というファイルの中身を見てください。

ヒント

隠しファイルも出すには、ls のあとに -Force を付けます。HEAD の中身は、第2章で学んだ、ファイルの中身を見るコマンドで見られます。

こたえと解説
ls -Force
ls .git
type .git\HEAD
PS C:\work\my-notes> type .git\HEAD
ref: refs/heads/main

.git の中には、HEAD、config、objects などが入っています。HEAD には、「今いるのは main という枝」と書かれています。Git の記録は、すべてこのフォルダの中の、ただのファイルです。-Force は「強制的に(隠しも)」という意味です。

.git の中は、触らない 見るだけにしてください。.git を消したり、中のファイルを書き換えたりすると、履歴がすべて失われることがあります。
🎯 チャレンジ2 ★★☆ 履歴の中から、探す

第2章で、ファイルの中から文字を探しました。コミットのメッセージの中から、second という文字を含むコミットを探してください。

ヒント

git log に、--grep=探す文字 を付けます。見やすくするために、--oneline も一緒に付けましょう。

こたえと解説
git log --oneline --grep=second
PS C:\work\my-notes> git log --oneline --grep=second
7b1e4d8 Add second line to hello.txt

メッセージに second が入っている記録だけが、出てきます。履歴が何百件にもなると、こうした検索が役に立ちます。メッセージを、あとで探せるように、具体的に書くことが大切な理由でもあります。

🎯 チャレンジ3 ★★☆ 日本語のコミットメッセージを試す

hello.txt に、もう1行足して(半角英数でよい)、日本語のメッセージでコミットしてみましょう。たとえば、git commit -m "3行目を追加" です。そのあと、git log --oneline で、日本語が正しく表示されるか確かめてください。

ヒント

コミットするときは、日本語入力に切り替えて、メッセージの部分だけ日本語にします。git add を、お忘れなく。

こたえと解説

多くの環境では、日本語のメッセージが、そのまま正しく表示されます。そのまま使えます。

もし文字化け(意味の分からない文字)になったときは、Git の記録は正しくても、PowerShell の表示の設定が合っていないだけです。次のコマンドで、表示の設定を変えて、もう一度 git log --oneline を打ってみてください(今開いている PowerShell だけに効く、一時的な設定です)。

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

日本語のメッセージが使えると、あとで読み返すときに、「何をしたか」がすぐ分かります。どちらを使うかは、自分で(ほかの人と一緒に使うなら、話し合って)決めましょう。

コマンドの早見表 この章のコマンドは、付録A「よく使うコマンド一覧」にも載せています。

確認クイズ

Q1. ファイルを、作業フォルダから、ステージに並べるコマンドは?

git add ファイル名。(ステージに並べるだけで、まだ記録はされない)

Q2. git commit -m "…" の、-m のあとに書くものは何ですか?

「何をしたか」を表す、メッセージ。あとで履歴を見たとき、記録の内容が分かるようにするため。

Q3. どんな状態か分からなくなったとき、まず打つコマンドは?

git status。何度打っても安全で、今の状態と、次にできることを教えてくれる。

Q4. git log の画面が止まって、戻れなくなったときは?

q キーを押す。

Q5. なぜ、git init を打つ前に、プロンプトで場所を確認するのですか?

git init は、今いるフォルダを Git の管理対象にするため。C:\work のような大きな場所で打つと、その中のすべてのフォルダが対象になってしまう。

話し合おう・考えてみよう