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

第5章 / 目安 60〜80分

一人で使いこなす:毎日の流れ・履歴を読む・取り消す

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

5-1. 一人で使うなら、main だけで十分

第3章と第4章で、記録して(commit)、GitHub に送る(push)ところまでできました。一人で使うなら、枝(ブランチ)は使わず、main だけで十分です。

この章では、新しい道具をたくさん覚えるのではなく、一人で、安心して、毎日使えるようになることをめざします。そのために大切なのは、次の2つです。

「戻せる」と分かると、こわくなくなる Git のいちばんの良さは、「いつでも、前の状態に戻れる」ことです。戻し方を知っていれば、思い切って、ファイルを書き換えられます。

5-2. 毎日の流れ

一人で Git を使うときの、基本のくり返しです。これを、何も見ずにできるようになるのが、この章の目標です。

① pull 最新にする ② 作業 メモ帳で編集 ③ 確認 status・diff ④ 記録 add・commit ⑤ push GitHub に送る 次の日も、①から、くり返す(②〜④は、1日に何回でもよい)
毎日の流れ。始める前に pull、終わったら push
いつコマンドなぜ
作業を始める前git pull別のパソコンや、GitHub の画面で変えた記録を、先に受け取るため(パソコン1台だけなら、何も起きないが、習慣にしておく)
記録する前git status・git diff「何を変えたか」を、自分の目で確かめるため
区切りがついたらgit add・git commit -m1つの区切り(1つの変更)を、1つの記録にする
作業を終えるときgit pushGitHub に置いておけば、パソコンが壊れても、記録が残る
記録(commit)は、こまめに 「1日の終わりに、まとめて1回」よりも、「区切りがつくたびに、1回」のほうが、あとで戻しやすくなります。メッセージには、「何をしたか」を短く書きます。

5-3. 実際にやってみよう:一人で、最初から作る

今度は、第3章・第4章の手順を見ながら、新しいリポジトリ diary(日記)を、一人で、最初から作ります。毎日1行ずつ、日記を書いて、記録していきます。

打つ前に確認

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

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

第3章の手順2と同じです。C:\work\diary が、新しいリポジトリになりました。

手順2:記録しないファイルを決める(.gitignore)

フォルダの中には、記録したくない(GitHub に送りたくない)ファイルが、置かれることがあります。たとえば、自分だけの下書きや、パスワードを書いたメモです。そういうファイルの名前を、.gitignore という名前のファイルに書いておくと、Git は、そのファイルを無視します。

ここでは、private.txt を、記録しないファイルにします。

New-Item .gitignore
notepad .gitignore

メモ帳が開いたら、private.txt と1行書いて、最後に Enter で改行して、保存して閉じます。続けて、private.txt を作って、状態を見ます。

New-Item private.txt
git status
PS C:\work\diary> git status
On branch main

No commits yet

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

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

.gitignore は出ていますが、private.txt は、出ていません。Git が、無視しているからです。ls で見ると、private.txt は、ちゃんとフォルダの中にあります。

💡 ignore =「無視する」。名前の最初の .(ドット)も、名前の一部です。忘れずに付けます。

.gitignore そのものは、記録しておきます(どのファイルを無視するかも、大切な情報だからです)。

git add .gitignore
git commit -m "Add .gitignore"
PowerShell で、git init から .gitignore と private.txt を作り、ls -Force で確かめて、.gitignore を記録するまでを打った画面
手順1〜2を、実際に打った画面の例(フォルダ名は diary2 にしています)。cat .gitignore で、private.txt と書けたことを確かめています。ls -Force(第3章)で見ると、private.txt はフォルダの中にちゃんとあります。隠しフォルダの .git も見えています。この例は、メモ帳の代わりに nvim(文字で操作するエディター)を使い、コミットメッセージを日本語で書いていますが、流れは同じです
.gitignore の書き方(よく使うもの)
書き方意味
private.txtその名前のファイルを、無視する
*.tmp.tmp で終わるファイルを、すべて無視する(* は第2章の「何でも当てはまる」記号)
drafts/drafts フォルダの中を、まるごと無視する
すでに記録したファイルは、あとから書いても無視されない .gitignore が効くのは、まだ記録していないファイルだけです。パスワードなどを書いたファイルは、記録する前に、.gitignore に書いておきましょう。

手順3:1日目の日記を書いて、記録する

New-Item diary.txt
notepad diary.txt

day 1: I started using Git. と書いて(最後に Enter)、保存して閉じます。日本語で書いても構いません。

git add diary.txt
git commit -m "Add day 1"
PS C:\work\diary> git commit -m "Add day 1"
[main 6e467d8] Add day 1
 1 file changed, 1 insertion(+)
 create mode 100644 diary.txt

手順4:GitHub に置く

第4章の手順2〜4と同じです。分からなくなったら、第4章を見返してください。

  1. GitHub で、新しいリポジトリ diary を作る(Private、「Add README」は Off、すべて空のまま)
  2. 表示された URL を使って、結びつけて、送る
git remote add origin https://github.com/ユーザー名/diary.git
git push -u origin main
PowerShell で、diary.txt を作って記録し、git remote add と git push -u origin main までを打った画面
手順3〜4を、実際に打った画面の例(手順2の続きで、フォルダ名とリポジトリ名は diary2 です)。diary.txt には I started using Git. と書き、Add day 1 で記録しています。そのあと、git remote add で GitHub と結びつけて、git push -u origin main で送っています。最後に branch 'main' set up to track 'origin/main'. と出れば、送れています

GitHub の画面で、.gitignore と diary.txt があり、private.txt が無いことを、確かめてください。無視したファイルは、GitHub にも送られません。

GitHub の diary2 リポジトリの画面。.gitignore と diary.txt の2つのファイルがあり、2 Commits と表示されている
push のあとの GitHub の画面(リポジトリ名は diary2)。名前の横に「Private」と出ています。ファイルは .gitignore と diary.txt の2つだけで、private.txt はありません。右上の「2 Commits」は、手順2と手順3の、2回の記録です。下の「Add a README」は、押さなくて大丈夫です

手順5:2日目:毎日の流れで、記録する

次の日になったつもりで、5-2 の「毎日の流れ」を、一周してみましょう。

git pull
notepad diary.txt

2行目に day 2: I learned git diff. と足して(最後に Enter)、保存して閉じます。記録する前に、何を変えたかを確かめます。

git status
git diff
PS C:\work\diary> git diff
diff --git a/diary.txt b/diary.txt
index 9827e9c..52f7f5c 100644
--- a/diary.txt
+++ b/diary.txt
@@ -1 +1,2 @@
 day 1: I started using Git.
+day 2: I learned git diff.

先頭に + が付いた行が、足した行です(第3章で学んだ git diff です)。思ったとおりの変更なら、記録して、送ります。

git add diary.txt
git commit -m "Add day 2"
git push

これで、毎日の流れを、一周しました。

日記に慣れたら:ふだんの文書でも、同じ流れで この章では日記を使いますが、流れ(書く → git diff で確かめる → add → commit → push)は、どんな文章でも同じです。慣れてきたら、会議のメモ、作業の手順書、チェックリストなど、ふだんの作業に近い文書を、自分で新しいリポジトリを作って管理してみてください。メモ帳で書ける .txt や .md のファイルが、Git と相性のよい形です。
ただし、仕事の情報やお客様の情報は、GitHub に置かないでください(第0章「会社や学校のパソコンで学ぶ人へ」)。練習には、自分で書いた、人に見られても困らない内容を使います。
☕ ここで一区切りしてOK 次は「5-4. 履歴を読む」からです。再開するときは、PowerShell を開き、cd C:\work\diary で戻ってから、始めてください。

5-4. 履歴を読む

記録が増えてくると、「あの日、何を変えたんだっけ?」と、振り返りたくなります。git log で一覧を見て、git show で、1つの記録の中身を見ます。

git log --oneline
PS C:\work\diary> git log --oneline
9e6d741 (HEAD -> main, origin/main) Add day 2
6e467d8 Add day 1
c3e2d5c Add .gitignore

1日目の記録(6e467d8)の中身を見てみます。IDは、自分の画面に出たものを使ってください。

git show 6e467d8
PS C:\work\diary> git show 6e467d8
commit 6e467d8bcffe7c07c9a50ea312a30189d217a3e4
Author: あなたの名前 <メールアドレス>
Date:   Mon Oct 12 10:15:04 2026 +0900

    Add day 1

diff --git a/diary.txt b/diary.txt
new file mode 100644
index 0000000..9827e9c
--- /dev/null
+++ b/diary.txt
@@ -0,0 +1 @@
+day 1: I started using Git.

誰が・いつ・何のために(メッセージ)・何を変えたかが、1つの画面で分かります。下半分は、git diff と同じ読み方です。画面が止まったら、q で抜けます(第3章の git log と同じです)。

💡 show =「見せる」。IDは、最初の7文字だけで、Git が見分けてくれます。

やりたいことコマンド
記録の一覧を見るgit log --oneline
1つの記録の中身を見るgit show ID
一覧と、中身を、まとめて見る(新しい順)git log -p
そのときの、ファイルの中身だけを見るgit show ID:ファイル名

💡 -p は patch(変更の中身)の頭文字です。

GitHub の画面でも、同じものが見える GitHub のリポジトリ画面で「Commits」を押し、1つの記録をクリックすると、git show と同じ内容が、色付きで見られます(足した行は緑、消した行は赤)。

5-5. 取り消す:3つの場面

失敗には、「どこまで進んだか」によって、3つの場面があります。第3章の「3つの場所」(作業フォルダ・ステージ・リポジトリ)を思い出してください。

「戻せる」と分かると、安心して変えられる 共有フォルダでの作業では、「上書きしたら、元に戻せない」という心配がつきものでした。Git で記録していれば、記録した時点には、いつでも戻れます。この節では、わざと失敗して、実際に戻してみます。「戻せる」ことを一度体験しておくと、これから先、思い切ってファイルを変えられるようになります。
場面どこまで進んだか戻し方
Aファイルを変えて保存した(まだ add していない)git restore ファイル名
Badd した(まだ commit していない)git restore --staged ファイル名
Ccommit した(push も、した)git revert ID

場面A:保存した変更を、捨てる(restore)

メモ帳で diary.txt を開き、中身を全部消して、oops とだけ書いて、保存して閉じてください(わざと失敗します)。

git status
PS C:\work\diary> git status
On branch main
Your branch is up to date with 'origin/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:   diary.txt

2行目の説明に、git restore <file> で「変更を捨てる(discard)」と書いてあります。そのとおりに打ちます。

git restore diary.txt
type diary.txt
PS C:\work\diary> git restore diary.txt
PS C:\work\diary> type diary.txt
day 1: I started using Git.
day 2: I learned git diff.

最後に記録したときの状態に、戻りました。

💡 restore =「元に戻す」。

捨てた変更は、戻らない git restore で捨てた変更は、まだ記録していなかったので、Git にも残っていません。本当に要らない変更のときだけ、使ってください。

場面B:add を、取り消す(restore --staged)

3行目に day 3: restore is useful. と足して保存し、git add diary.txt を打ちます。そのあとで、「まだ記録に入れたくない」と思ったとします。

git restore --staged diary.txt
git status
PS C:\work\diary> git restore --staged diary.txt
PS C:\work\diary> git status
On branch main
Your branch is up to date with 'origin/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:   diary.txt

ステージから、下ろされました(Changes to be committed から、Changes not staged に戻りました)。ファイルの中身(3行目)は、そのまま残っています。場面A と違い、何も失われません。

💡 staged =「ステージに並べられた」。--staged を付けると、「ステージから下ろす」だけになります。

確かめたら、もう一度 add して、記録して、送っておきましょう。

git add diary.txt
git commit -m "Add day 3"
git push

場面C:記録(commit)を、取り消す(revert)

記録して、GitHub に送ったあとで、「あの記録は、間違いだった」と気づくこともあります。わざと、その場面を作ります。メモ帳で diary.txt の中身を全部消して保存し、記録して、送ってしまいます。

git add diary.txt
git commit -m "Clean up diary"
git push
git log --oneline
PS C:\work\diary> git log --oneline
49d72cc (HEAD -> main, origin/main) Clean up diary
4958812 Add day 3
9e6d741 Add day 2
6e467d8 Add day 1
c3e2d5c Add .gitignore

取り消したい記録は、いちばん上の 49d72cc(Clean up diary)です。git revert に、その ID を付けて打ちます。

git revert 49d72cc

メモ帳が開きます。最初の行に、Revert "Clean up diary" と書かれています。これは、「取り消した」という記録のメッセージです。何も変えずに、保存して(Ctrl + S)、メモ帳を閉じてください。第4章のチャレンジ3で、pull のときにメモ帳が開いたのと、同じです。閉じると、unix2dos / dos2unix の行が出ますが、無視してよいお知らせです。

PS C:\work\diary> git revert 49d72cc
hint: Waiting for your editor to close the file... unix2dos: converting file C:/work/diary/.git/COMMIT_EDITMSG to DOS format...
dos2unix: converting file C:/work/diary/.git/COMMIT_EDITMSG to Unix format...
[main 6ff89fa] Revert "Clean up diary"
 1 file changed, 3 insertions(+)
PS C:\work\diary> type diary.txt
day 1: I started using Git.
day 2: I learned git diff.
day 3: restore is useful.
PS C:\work\diary> git log --oneline
6ff89fa (HEAD -> main) Revert "Clean up diary"
49d72cc (origin/main) Clean up diary
4958812 Add day 3
9e6d741 Add day 2
6e467d8 Add day 1
c3e2d5c Add .gitignore

日記が、3行とも戻りました。履歴を見ると、Clean up diary は消えずに残り、その上に、「それを打ち消す記録」(Revert "Clean up diary")が、新しく足されています。最後に、GitHub にも送ります。

git push

💡 revert =「元の状態に戻す」。

Add day 2 Add day 3 Clean up diary (間違い) Revert "Clean up…" (打ち消す記録) → 中身は「Add day 3」に戻る
revert は、間違えた記録を消さない。「逆の変更」を、新しい記録として足す
revert は、push したあとでも安全 revert は、過去の記録を消したり、書き換えたりしません。新しい記録を1つ足すだけなので、GitHub に送ったあとでも、ふつうに git push で送れます。「間違えた」ことも、「直した」ことも、履歴に正直に残ります。
git reset --hard と git push --force は、まだ使わない ネットでは、記録を取り消す方法として、git reset がよく紹介されています。reset は、過去の記録そのものを、なかったことにするコマンドで、使い方を間違えると、記録が失われます。GitHub に送ったあとに使うと、push が拒否され、--force(強制)が必要になります。この教材では、取り消しは revert にします。
☕ コーヒーブレイク:AI に文書を直してもらうときも、Git が役に立つ(読み飛ばしてOK)

AI に「この手順書を読みやすく直して」と頼むと、AI は、ファイルをまとめて書き換えてくれます。便利ですが、「どこを変えたのか」「大事な部分まで消していないか」が、気になります。この章で学んだことが、そのまま使えます。

  1. 頼む前に、記録する(add → commit)。これで「AI に頼む前の状態」が残ります。
  2. AI が書き換えたら、git diff で、変わったところを確かめる。- の行が消えた行、+ の行が足された行です。
  3. よければ、記録する。気に入らなければ、git restore で、頼む前に戻す(場面A)。記録したあとで気づいたら、git revert(場面C)。

AI を使った作業を手伝う道具の多くが、Git を前提にしているのは、このためです。「AI に任せても、確かめられる・戻せる」という安心感が、Git の大きな役割の1つです。

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

やりたいことコマンド
記録しないファイルを決める.gitignore に、ファイル名を書く
1つの記録の中身を見るgit show ID
保存した変更を、捨てる(add 前)git restore ファイル名
add を取り消す(中身は残る)git restore --staged ファイル名
記録を、打ち消す(push 後でもよい)git revert ID

5-6. チャレンジ

必須ではありません。5-5 が終わった状態から始めます。

🎯 チャレンジ1 ★☆☆ 1日目の日記を、ファイルを開かずに読む

今の diary.txt には、3行あります。1日目の記録をしたときの diary.txt の中身を、メモ帳を使わず、ターミナルだけで表示してください。

ヒント

まず git log --oneline で、Add day 1 の ID を調べます。5-4 の表の、いちばん下の行を使います。

こたえと解説
git log --oneline
git show 6e467d8:diary.txt
PS C:\work\diary> git show 6e467d8:diary.txt
day 1: I started using Git.

ID:ファイル名 の形で、そのときのファイルの中身だけを見られます。今のファイルは、変わりません。「前は、どう書いてあったっけ?」というときに便利です。

🎯 チャレンジ2 ★★☆ .gitignore に、ルールを足す

memo.tmp と draft.tmp という2つのファイルを作ってください。そして、.tmp で終わるファイルを、すべて無視するように、.gitignore を変えて、記録してください。git status に、2つのファイルが出なくなれば、成功です。

ヒント

5-3 の手順2の「.gitignore の書き方」の表を見ます。.gitignore そのものを変えたので、.gitignore を add・commit します。

こたえと解説
New-Item memo.tmp
New-Item draft.tmp
git status
notepad .gitignore

最初の git status では、memo.tmp と draft.tmp が、Untracked files に出ます。メモ帳で、2行目に *.tmp と足して(最後に Enter)保存し、閉じます。

git status
git add .gitignore
git commit -m "Ignore tmp files"
git push

2回目の git status では、.tmp のファイルは出ずに、modified: .gitignore だけが出ます。* は「何でも当てはまる」記号なので、*.tmp で、.tmp で終わるファイルが、まとめて無視されます。

🎯 チャレンジ3 ★★★ 間違えた記録を、自分で見つけて、取り消す

次の手順で、わざと失敗を作り、どの記録が間違いかを、自分で見つけて、取り消してください。

  1. diary.txt に day 4: good day. と足して、add・commit(メッセージ Add day 4)する。
  2. diary.txt の 1行目だけを消して、add・commit(メッセージ Update diary)する。
  3. diary.txt に day 5: Git is fun. と足して、add・commit(メッセージ Add day 5)し、push する。

あとで見ると、1行目が消えています。4日目と5日目の行は残したまま、1行目だけを戻すには、どうしますか?

ヒント

メッセージだけでは、どの記録で1行目が消えたか、分かりにくいことがあります。git log -p で、-(消した行)が出ている記録を探します。revert は、いちばん新しい記録でなくても、取り消せます。

こたえと解説
git log -p

Update diary の記録に、-day 1: I started using Git.(先頭が -)が出ています。これが、1行目を消した記録です。q で抜けて、その ID で取り消します。

git log --oneline
git revert Update diaryのID
type diary.txt
git push

メモ帳が開いたら、保存して閉じます。type で見ると、1行目が戻り、4日目・5日目の行も、そのまま残っています。revert は、「その記録で行った変更だけ」を打ち消すので、あとの記録には、影響しません。

このように、メッセージが「Update diary」のように、あいまいだと、あとで探しにくくなります。「Remove first line」のように、何をしたかが分かるメッセージを書くと、未来の自分が助かります。

STEP 2 の仕上げ:しばらく、一人で使ってみる 次の章に進む前に、1〜2週間、自分のファイルを Git で記録してみることをおすすめします。日記、読書メモ、レシピ、仕事の手順書など、テキストで書けるものなら、何でも構いません。diary のように、新しいリポジトリを作り、毎日の流れ(pull → 作業 → add → commit → push)をくり返します。何も見ずに、毎日の流れができるようになったら、次へ進みましょう。
コマンドの早見表 この章のコマンドは、付録A「よく使うコマンド一覧」にも載せています。

確認クイズ

Q1. 「毎日の流れ」で、作業を始める前と、終えるときに打つコマンドは、それぞれ何ですか?

始める前は git pull(最新にする)。終えるときは git push(GitHub に送る)。

Q2. .gitignore に書いたファイルは、どうなりますか?

Git に無視され、git status にも出ず、記録されない。GitHub にも送られない。ただし、すでに記録したファイルは、あとから書いても無視されない。

Q3. git restore ファイル名 と git restore --staged ファイル名 の違いは?

git restore ファイル名 は、保存した変更を捨てて、最後の記録の状態に戻す(捨てた変更は戻らない)。--staged を付けると、ステージから下ろすだけで、ファイルの中身は変わらない。

Q4. push したあとで、記録が間違いだと気づきました。どうしますか?

git revert ID で、その記録を打ち消す、新しい記録を作る。そのあと git push する。過去の記録は消さないので、push したあとでも安全。

Q5. 1つの記録の中身(誰が・いつ・何を変えたか)を見るコマンドは?

git show ID。ID は、git log --oneline で調べる。

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