一人で使いこなす:毎日の流れ・履歴を読む・取り消す
- 新しいリポジトリを、一人で、最初から作って、GitHub に置ける
- 「毎日の流れ」(
pull→ 作業 →add→commit→push)で、記録を続けられる - 記録しないファイルを、
.gitignoreで決められる - 過去の記録の中身を、
git showで読める - 失敗したときに、
git restoreとgit revertで、元に戻せる
5-1. 一人で使うなら、main だけで十分
第3章と第4章で、記録して(commit)、GitHub に送る(push)ところまでできました。一人で使うなら、枝(ブランチ)は使わず、main だけで十分です。
この章では、新しい道具をたくさん覚えるのではなく、一人で、安心して、毎日使えるようになることをめざします。そのために大切なのは、次の2つです。
- 毎日の流れが、手に馴染んでいること
- 失敗しても、元に戻せると知っていること
5-2. 毎日の流れ
一人で Git を使うときの、基本のくり返しです。これを、何も見ずにできるようになるのが、この章の目標です。
pull、終わったら push| いつ | コマンド | なぜ |
|---|---|---|
| 作業を始める前 | git pull | 別のパソコンや、GitHub の画面で変えた記録を、先に受け取るため(パソコン1台だけなら、何も起きないが、習慣にしておく) |
| 記録する前 | git status・git diff | 「何を変えたか」を、自分の目で確かめるため |
| 区切りがついたら | git add・git commit -m | 1つの区切り(1つの変更)を、1つの記録にする |
| 作業を終えるとき | git push | GitHub に置いておけば、パソコンが壊れても、記録が残る |
5-3. 実際にやってみよう:一人で、最初から作る
今度は、第3章・第4章の手順を見ながら、新しいリポジトリ diary(日記)を、一人で、最初から作ります。毎日1行ずつ、日記を書いて、記録していきます。
- 入力モードは「半角英数」に。
- 場所は
C:\workの中(OneDrive の外)。gitを打つ前に、プロンプトの場所を確かめます。 - 表示のコミットID(
6e467d8など)は、人によって違います。
手順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"
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章を見返してください。
- GitHub で、新しいリポジトリ
diaryを作る(Private、「Add README」は Off、すべて空のまま) - 表示された URL を使って、結びつけて、送る
git remote add origin https://github.com/ユーザー名/diary.git
git push -u origin main
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 にも送られません。
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章「会社や学校のパソコンで学ぶ人へ」)。練習には、自分で書いた、人に見られても困らない内容を使います。
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(変更の中身)の頭文字です。
git show と同じ内容が、色付きで見られます(足した行は緑、消した行は赤)。
5-5. 取り消す:3つの場面
失敗には、「どこまで進んだか」によって、3つの場面があります。第3章の「3つの場所」(作業フォルダ・ステージ・リポジトリ)を思い出してください。
| 場面 | どこまで進んだか | 戻し方 |
|---|---|---|
| A | ファイルを変えて保存した(まだ add していない) | git restore ファイル名 |
| B | add した(まだ commit していない) | git restore --staged ファイル名 |
| C | commit した(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 =「元の状態に戻す」。
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 は、ファイルをまとめて書き換えてくれます。便利ですが、「どこを変えたのか」「大事な部分まで消していないか」が、気になります。この章で学んだことが、そのまま使えます。
- 頼む前に、記録する(
add→commit)。これで「AI に頼む前の状態」が残ります。 - AI が書き換えたら、
git diffで、変わったところを確かめる。-の行が消えた行、+の行が足された行です。 - よければ、記録する。気に入らなければ、
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 が終わった状態から始めます。
今の 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:ファイル名 の形で、そのときのファイルの中身だけを見られます。今のファイルは、変わりません。「前は、どう書いてあったっけ?」というときに便利です。
.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 で終わるファイルが、まとめて無視されます。
次の手順で、わざと失敗を作り、どの記録が間違いかを、自分で見つけて、取り消してください。
diary.txtにday 4: good day.と足して、add・commit(メッセージAdd day 4)する。diary.txtの 1行目だけを消して、add・commit(メッセージUpdate diary)する。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」のように、何をしたかが分かるメッセージを書くと、未来の自分が助かります。
diary のように、新しいリポジトリを作り、毎日の流れ(pull → 作業 → add → commit → push)をくり返します。何も見ずに、毎日の流れができるようになったら、次へ進みましょう。
確認クイズ
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 で調べる。
話し合おう・考えてみよう
- 自分の仕事や生活で、Git で記録してみたいファイルは、何がありますか?
- 「区切りがついたら、1回記録する」の「区切り」は、あなたにとって、どのくらいの大きさですか?
- これまでに、「前の状態に戻したい」と思ったことは、ありますか? そのとき、
restoreやrevertがあったら、どう使いましたか?