GitHubをはじめよう

第8章

他の人の変更を受け取る

第7章で提案を取り込んだので、GitHub 側は先に進みました。でも手元はまだ古いままです。 Git は、自分から聞きに行かないかぎり、向こうで何が起きたかを知りません。 この章では、まず聞きに行き(fetch)、 中身を見てから取り込みます(pull)。 この2つの違いが分かると、思いがけない変更が降ってくるのを防げます。

この章でやること
GitHub で進んだぶん(第7章で取り込んだ提案)を、まず聞きに行って(fetch)中身を確かめ、それから手元に取り込みます(pull)。最後に、役目の終わった枝を片づけます。
この章が終わると
「聞きに行くだけ(fetch)」と「受け取って取り込む(pull)」を使い分けて、手元を GitHub と同じにできる状態
必要なもの
hello-github のフォルダーと、第7章で取り込んだ Pull Request。新しく入れるものはありません。
かかる時間の目安
10分ほど(自分の手で進めながら)
前の章で済ませたこと
第7章で Pull Request を出し、GitHub の上で main に取り込みました(手元の main はまだ古いままです)。 ターミナルと AI エージェントの人は、開いたら cd ~/Documents/hello-github で中に入ります。

この章で出てくる言葉

分かる言葉は読み飛ばして構いません。途中で分からない言葉が出たら、ここに戻ってきてください。前の章で説明した言葉は、その章の冒頭(パソコンの基本の言葉はトップページ)にあります。

Fast-forward(早送り)
手元で何も変えていないので、GitHub 側の記録まで、そのまま進めるだけで追いつけること。ぶつかるところが無い、という意味でもあります。

この章の進め方を選んでください

同じことを3つのやり方で説明します。どれを選んでも、できあがるものは同じです。 あとから何度でも変えられます。

ターミナル:黒い画面に命令を打ちます。遠回りに見えますが、Git が何をしているかがそのまま見えるので、あとで困ったときに自分で調べられるようになります。

VS Code:エディタ(VS Code)の画面で、ボタンを押して進めます。コマンドを覚えなくても同じことができます。中で動いているのは、ターミナルで打つのと同じ Git です。

AI エージェント:やりたいことを日本語で伝えて、AI に代わりにやってもらいます。ここでは Claude Code を例にしますが、載せている指示文は他のエージェントでもほとんどそのまま使えます。

下にスクロールすると、手順が1つずつ再生されます。見逃したら、スクロールを戻せば同じところが巻き戻ります。 この章はすべて手元での作業です。GitHub の画面は出てきません。

ターミナルで進める

  1. 01 / 11

    第7章の続きです。GitHub 側は先に進みましたが、手元はまだ古いままです。

    ターミナルを開いて cd ~/Documents/hello-github と打ちます。いまいるのは add-usage の枝です。ここから本流へ戻って、進んだぶんを受け取ります。

    うまくいかないとき:見つからないと出たら、打ち間違いを見直します(Windows で cd ~ に置いた人は cd ~/hello-github)。

    ~/Documents/hello-github
  2. 02 / 11

    本流の枝 main へ戻ります。

    git switch main

    ここで出る「up to date」は、あてになりません。まだ GitHub に聞きに行っていないので、手元が覚えている古い情報を見ているだけです。

    うまくいかないとき:移れないと出たら、記録していない変更があります。git status で中身を見て、要るなら第4章と同じように記録してから移ります。

    ~/Documents/hello-github
  3. 03 / 11

    GitHub 側の様子を聞きに行きます。これが fetch です。

    git fetch

    fetch は「聞きに行くだけ」で、手元のファイルは1つも変わりません。だから、いつ実行しても安全です。

    うまくいかないとき:Username と Password を聞かれたら、サインインが済んでいません。Ctrl + C で止め、第3章の gh auth login を済ませます。

    ~/Documents/hello-github
  4. 04 / 11

    もう一度いまの状態を見ます。今度は「2つ遅れている」と出ました。

    git status

    behind は「遅れている」、fast-forwarded は「そのまま追いつける(ぶつかるところが無い)」という意味です。

    うまくいかないとき:behind の行が出ないときは、第7章の取り込み(Merge pull request)が済んでいないか、fetch できていません。GitHub の画面と手順3を見直します。

    ~/Documents/hello-github
  5. 05 / 11

    入れる前に、何が入ってくるのかを見ます。2つの記録が待っています。

    git log --oneline main..origin/main

    main..origin/main は「GitHub 側にあって、手元に無いもの」という書き方です。

    うまくいかないとき:(END) や : で止まったら q を押します。何も出ないときは、受け取るものがありません。手順4を見直します。

    ~/Documents/hello-github
  6. 06 / 11

    納得したら取り込みます。これが pull です。

    git pull

    pull は「fetch してから手元に合流させる」の2つをまとめてやります。中身を見ずに取り込みたくないときは、fetch だけにしてください。

    うまくいかないとき:CONFLICT(ぶつかり)という英語が出たら、手元の main でも同じ行を直して記録しています。この教材では main を直さないので、手順を見直します。

    ~/Documents/hello-github
  7. 07 / 11

    記録の流れを見ます。枝が分かれて、合流したかたちが残っています。

    git log --oneline --graph -5

    Merge pull request で始まる記録が、第7章で取り込んだ跡です。誰が何をいつ入れたかが、ここに残ります。

    うまくいかないとき:(END) や : で止まったら q を押して戻ります。

    ~/Documents/hello-github
  8. 08 / 11

    追いつきました。「up to date」が、今度は本当のことになっています。

    git status

    うまくいかないとき:behind がまだ出るときは、手順6の pull が途中で止まっています。出力を見直して、もう一度 git pull を打ちます。

    ~/Documents/hello-github
  9. 09 / 11

    枝の一覧を見ます。GitHub 側で消した枝が、手元にはまだ残っています。

    git branch -a

    remotes/ で始まる行は「GitHub 側にあると手元が覚えているもの」です。消したことは、まだ伝わっていません。

    うまくいかないとき:(END) で止まったら q を押します。remotes/origin/add-usage が無いときは、もう片づいているので、手順11は飛ばして構いません。

    ~/Documents/hello-github
  10. 10 / 11

    役目の終わった枝を消します。

    git branch -d add-usage

    -d は「取り込み済みのものだけ消す」という意味です。まだ取り込んでいない枝は、この書き方では消えません。

    うまくいかないとき:error: the branch … is not fully merged と出たら、まだ取り込んでいない記録があります。第7章の取り込みと、手順6の pull を確かめます。

    ~/Documents/hello-github
  11. 11 / 11

    手元が覚えている古い情報も片づけます。これで第8章はおしまいです。

    git fetch --prune

    --prune は「GitHub 側にもう無いものを、手元の記憶からも消す」という意味です。

    うまくいかないとき:remotes/origin/add-usage が消えないときは、第7章で GitHub 側の枝を消していません(Delete branch)。消してから、もう一度打ちます。

    ~/Documents/hello-github

うまくいかないとき(手順ごと)

上の手順の番号と合わせて見てください。

  1. 01

    第7章の続きです。GitHub 側は先に進みましたが、手元はまだ古いままです。

    見つからないと出たら、打ち間違いを見直します(Windows で cd ~ に置いた人は cd ~/hello-github)。

  2. 02

    本流の枝 main へ戻ります。

    移れないと出たら、記録していない変更があります。git status で中身を見て、要るなら第4章と同じように記録してから移ります。

  3. 03

    GitHub 側の様子を聞きに行きます。これが fetch です。

    Username と Password を聞かれたら、サインインが済んでいません。Ctrl + C で止め、第3章の gh auth login を済ませます。

  4. 04

    もう一度いまの状態を見ます。今度は「2つ遅れている」と出ました。

    behind の行が出ないときは、第7章の取り込み(Merge pull request)が済んでいないか、fetch できていません。GitHub の画面と手順3を見直します。

  5. 05

    入れる前に、何が入ってくるのかを見ます。2つの記録が待っています。

    (END) や : で止まったら q を押します。何も出ないときは、受け取るものがありません。手順4を見直します。

  6. 06

    納得したら取り込みます。これが pull です。

    CONFLICT(ぶつかり)という英語が出たら、手元の main でも同じ行を直して記録しています。この教材では main を直さないので、手順を見直します。

  7. 07

    記録の流れを見ます。枝が分かれて、合流したかたちが残っています。

    (END) や : で止まったら q を押して戻ります。

  8. 08

    追いつきました。「up to date」が、今度は本当のことになっています。

    behind がまだ出るときは、手順6の pull が途中で止まっています。出力を見直して、もう一度 git pull を打ちます。

  9. 09

    枝の一覧を見ます。GitHub 側で消した枝が、手元にはまだ残っています。

    (END) で止まったら q を押します。remotes/origin/add-usage が無いときは、もう片づいているので、手順11は飛ばして構いません。

  10. 10

    役目の終わった枝を消します。

    error: the branch … is not fully merged と出たら、まだ取り込んでいない記録があります。第7章の取り込みと、手順6の pull を確かめます。

  11. 11

    手元が覚えている古い情報も片づけます。これで第8章はおしまいです。

    remotes/origin/add-usage が消えないときは、第7章で GitHub 側の枝を消していません(Delete branch)。消してから、もう一度打ちます。

VS Codeで進める

  1. 01 / 11

    第7章の続きです。ソース管理に戻り、README.md のタブを開いておきます。一番下の帯は add-usage のままです。

    GitHub 側では第7章で main に取り込みましたが、手元はまだそのことを知りません。

    うまくいかないとき:VS Code を閉じていたら、「ファイル」→「最近使用した項目を開く」で hello-github を開きます。

    hello-github
  2. 02 / 11

    帯の枝の名前を押して、枝の一覧を出します。

    うまくいかないとき:一覧が出ないときは、帯の枝の名前をもう一度押します。閉じるときは Esc キーです。

    hello-github
  3. 03 / 11

    main を選びます。README から「使い方」の節が消えました。

    帯の印は「そろっている」ままですが、あてになりません。まだ GitHub に聞きに行っていないので、手元が覚えている古い情報を見ているだけです。

    うまくいかないとき:移れないという知らせが出たら、記録していない変更があります。ソース管理で中身を見て、記録してから選び直します。

    hello-github
  4. 04 / 11

    「グラフ」節の見出しにマウスを乗せます。下向きの矢印が2つ並んでいて、左が「すべてのリモートからフェッチ」、右が「プル」です。

    フェッチ(fetch)は GitHub の様子を聞きに行くだけ、プル(pull)は聞きに行って手元に取り込むまでやります。

    うまくいかないとき:ボタンが出ないときは、マウスを「グラフ」の見出しの行に乗せたままにします。見出しが閉じていたら、押して開きます。

    hello-github
  5. 05 / 11

    「すべてのリモートからフェッチ」を押します。帯の印が 2↓ 0↑ になり、ボタンが「変更の同期 2↓」に変わりました。

    「2つ受け取っていないものがある」と分かっただけで、README はまだ変わっていません。フェッチは手元のファイルに手を付けないので、いつ押しても安全です。

    うまくいかないとき:2↓ が出ないときは、第7章の取り込み(Merged)が済んでいるかを GitHub の画面で確かめてから、もう一度押します。

    hello-github
  6. 06 / 11

    グラフを見ます。「受信した変更点」より上の2行が、まだ手元に入っていない記録です。

    第7章で取り込んだ提案(使い方の節を足す)と、その取り込みの記録です。身に覚えのないものが並んでいたら、取り込む前に何が起きたのかを調べてください。

    うまくいかないとき:「受信した変更点」が見えないときは、グラフを上へスクロールします。見当たらなければ、手順5のフェッチを押し直します。

    hello-github
  7. 07 / 11

    納得したら「プル」を押します。README に「使い方」の節が入りました。

    「変更の同期 2↓」を押しても受け取れます。同期は、受け取る(プル)と送る(プッシュ)をまとめて行うボタンです。

    うまくいかないとき:README が変わらないときは、帯に 2↓ が残っていないかを見ます。残っていたら、もう一度「プル」を押します。

    hello-github
  8. 08 / 11

    グラフには、線が分かれて、また合流した形が残っています。

    一番上の Merge pull request で始まる記録が、第7章で取り込んだ跡です。誰が何をいつ入れたかが、ここに残ります。帯の印も、ずれが無くなったので印だけに戻りました。

    うまくいかないとき:グラフが古いままに見えるときは、「グラフ」の見出しを押して閉じ、もう一度押して開きます。

    hello-github
  9. 09 / 11

    最後に、役目の終わった add-usage を片づけます。エディターの上のタブで、第7章の Pull Request の画面に戻ります。

    うまくいかないとき:Pull Request のタブを閉じてしまったら、左端の GitHub のアイコンを押し、Pull Request の一覧から開き直します。

    hello-github
  10. 10 / 11

    Delete Branch... を押し、出てくる確認で Delete All を選びます。GitHub 側と手元の add-usage がまとめて消えました。

    確認では、GitHub 側だけ(Delete Remote Branch)や手元だけ(Delete Local Branch)を選ぶこともできます。枝を消しても、main に取り込んだ記録は残ります。

    うまくいかないとき:片方だけ消えたら、残ったほうを同じように消します。消してしまったあとでも、main に取り込んだ記録は残っています。

    hello-github
  11. 11 / 11

    帯の main を押して、枝の一覧を確かめます。add-usage が消えて main だけになりました。ここまでが第8章です。

    うまくいかないとき:add-usage がまだ一覧にあるときは、手元の枝が残っています。手順9〜10をもう一度行い、Delete All を選びます。

    hello-github

うまくいかないとき(手順ごと)

上の手順の番号と合わせて見てください。

  1. 01

    第7章の続きです。ソース管理に戻り、README.md のタブを開いておきます。一番下の帯は add-usage のままです。

    VS Code を閉じていたら、「ファイル」→「最近使用した項目を開く」で hello-github を開きます。

  2. 02

    帯の枝の名前を押して、枝の一覧を出します。

    一覧が出ないときは、帯の枝の名前をもう一度押します。閉じるときは Esc キーです。

  3. 03

    main を選びます。README から「使い方」の節が消えました。

    移れないという知らせが出たら、記録していない変更があります。ソース管理で中身を見て、記録してから選び直します。

  4. 04

    「グラフ」節の見出しにマウスを乗せます。下向きの矢印が2つ並んでいて、左が「すべてのリモートからフェッチ」、右が「プル」です。

    ボタンが出ないときは、マウスを「グラフ」の見出しの行に乗せたままにします。見出しが閉じていたら、押して開きます。

  5. 05

    「すべてのリモートからフェッチ」を押します。帯の印が 2↓ 0↑ になり、ボタンが「変更の同期 2↓」に変わりました。

    2↓ が出ないときは、第7章の取り込み(Merged)が済んでいるかを GitHub の画面で確かめてから、もう一度押します。

  6. 06

    グラフを見ます。「受信した変更点」より上の2行が、まだ手元に入っていない記録です。

    「受信した変更点」が見えないときは、グラフを上へスクロールします。見当たらなければ、手順5のフェッチを押し直します。

  7. 07

    納得したら「プル」を押します。README に「使い方」の節が入りました。

    README が変わらないときは、帯に 2↓ が残っていないかを見ます。残っていたら、もう一度「プル」を押します。

  8. 08

    グラフには、線が分かれて、また合流した形が残っています。

    グラフが古いままに見えるときは、「グラフ」の見出しを押して閉じ、もう一度押して開きます。

  9. 09

    最後に、役目の終わった add-usage を片づけます。エディターの上のタブで、第7章の Pull Request の画面に戻ります。

    Pull Request のタブを閉じてしまったら、左端の GitHub のアイコンを押し、Pull Request の一覧から開き直します。

  10. 10

    Delete Branch... を押し、出てくる確認で Delete All を選びます。GitHub 側と手元の add-usage がまとめて消えました。

    片方だけ消えたら、残ったほうを同じように消します。消してしまったあとでも、main に取り込んだ記録は残っています。

  11. 11

    帯の main を押して、枝の一覧を確かめます。add-usage が消えて main だけになりました。ここまでが第8章です。

    add-usage がまだ一覧にあるときは、手元の枝が残っています。手順9〜10をもう一度行い、Delete All を選びます。

AI エージェントで進める

  1. 01 / 10

    第7章の続きです。エージェントを起動したところから始めます。

    ターミナルを開いて cd ~/Documents/hello-github と打ち、claude で起動します。いまいるのは add-usage の枝で、手元はまだ古いままです。

    うまくいかないとき:claude が見つからないという意味の文が出たら、ターミナルを開き直してから打ちます(第3章の「準備」で入れたもの)。

    ~/Documents/hello-github
  2. 02 / 10

    「取り込まずに調べて」と頼みます。ここが大事なところです。

    ただ「最新にして」と頼むと、中身を見ないまま取り込まれます。まず調べさせて、自分で判断してください。

    うまくいかないとき:日本語入力をオンにして打ちます。変換を決める Enter のあと、もう一度 Enter を押すと送られます。

    ~/Documents/hello-github
  3. 03 / 10

    エージェントは、打つコマンドを見せて許可を求めてきます。

    fetch までなら手元のファイルは変わりません。pull が混ざっていないかを見てください。

    うまくいかないとき:本物の確認は英語で出ます。git pull が混ざっていたら Esc キーで断り、「取り込まずに調べて」と言い直します。

    ~/Documents/hello-github
  4. 04 / 10

    許可します。2つ遅れていることが分かりました。

    うまくいかないとき:サインインの失敗という意味の英語が出たら、/exit で終わらせ、gh auth login を済ませてから頼み直します(第3章)。

    ~/Documents/hello-github
  5. 05 / 10

    取り込む前に、何が入ってくるのかを見せてもらいます。

    うまくいかないとき:返事が来ないときは、少し待ちます。止まって見えるときは Esc キーで止めて、もう一度送ります。

    ~/Documents/hello-github
  6. 06 / 10

    2つの記録が待っています。第7章で取り込んだものです。

    ここで身に覚えのないものが並んでいたら、取り込む前に何が起きたのかを調べてください。

    うまくいかないとき:2つ出ないときは、第7章の取り込みが済んでいないかもしれません。GitHub の Pull Request の画面が Merged になっているかを見ます。

    ~/Documents/hello-github
  7. 07 / 10

    納得したので、取り込んでもらいます。

    うまくいかないとき:日本語入力をオンにして打ちます。変換を決める Enter のあと、もう一度 Enter を押すと送られます。

    ~/Documents/hello-github
  8. 08 / 10

    取り込まれました。README に「使い方」の節が入っています。

    Fast-forward は「そのまま追いつけた」という意味です。ぶつかるところが無かった、ということでもあります。

    うまくいかないとき:「使い方」の節が入っていないときは、main 以外の枝で取り込んでいます。「いまどの枝にいる?」と聞いて確かめます。

    ~/Documents/hello-github
  9. 09 / 10

    最後に、片づけられる枝があるかを聞きます。消すかどうかは自分で決めます。

    「消して」ではなく「教えて」と頼むのがコツです。消すのは戻しにくい操作なので、自分の目で見てから決めてください。

    うまくいかないとき:「消して」とだけ頼むと、確かめずに消されることがあります。まず「教えて」と頼み、消すかどうかは自分で決めます。

    ~/Documents/hello-github
  10. 10 / 10

    add-usage が残っていると教えてくれました。ここまでが第8章です。

    ここで出ている git branch -d と git fetch --prune が、ターミナルで進める場合に打つコマンドと同じものです。

    うまくいかないとき:消すと決めたら「add-usage を消して。GitHub 側に無い枝の情報も片づけて」と頼みます。許可の前に git branch -d になっているかを見ます。

    ~/Documents/hello-github

うまくいかないとき(手順ごと)

上の手順の番号と合わせて見てください。

  1. 01

    第7章の続きです。エージェントを起動したところから始めます。

    claude が見つからないという意味の文が出たら、ターミナルを開き直してから打ちます(第3章の「準備」で入れたもの)。

  2. 02

    「取り込まずに調べて」と頼みます。ここが大事なところです。

    日本語入力をオンにして打ちます。変換を決める Enter のあと、もう一度 Enter を押すと送られます。

  3. 03

    エージェントは、打つコマンドを見せて許可を求めてきます。

    本物の確認は英語で出ます。git pull が混ざっていたら Esc キーで断り、「取り込まずに調べて」と言い直します。

  4. 04

    許可します。2つ遅れていることが分かりました。

    サインインの失敗という意味の英語が出たら、/exit で終わらせ、gh auth login を済ませてから頼み直します(第3章)。

  5. 05

    取り込む前に、何が入ってくるのかを見せてもらいます。

    返事が来ないときは、少し待ちます。止まって見えるときは Esc キーで止めて、もう一度送ります。

  6. 06

    2つの記録が待っています。第7章で取り込んだものです。

    2つ出ないときは、第7章の取り込みが済んでいないかもしれません。GitHub の Pull Request の画面が Merged になっているかを見ます。

  7. 07

    納得したので、取り込んでもらいます。

    日本語入力をオンにして打ちます。変換を決める Enter のあと、もう一度 Enter を押すと送られます。

  8. 08

    取り込まれました。README に「使い方」の節が入っています。

    「使い方」の節が入っていないときは、main 以外の枝で取り込んでいます。「いまどの枝にいる?」と聞いて確かめます。

  9. 09

    最後に、片づけられる枝があるかを聞きます。消すかどうかは自分で決めます。

    「消して」とだけ頼むと、確かめずに消されることがあります。まず「教えて」と頼み、消すかどうかは自分で決めます。

  10. 10

    add-usage が残っていると教えてくれました。ここまでが第8章です。

    消すと決めたら「add-usage を消して。GitHub 側に無い枝の情報も片づけて」と頼みます。許可の前に git branch -d になっているかを見ます。

この章で覚えること

  1. 1

    fetch は聞きに行くだけ、pull は聞きに行って取り込む。 手元のファイルが変わるのは pull のほうだけです。

  2. 2

    聞きに行く前の「up to date」はあてになりません。 手元が覚えている古い情報を見ているだけです。迷ったら、まず fetch してから状態を見ます。

  3. 3

    手元の枝と GitHub の枝は別物です。 片方を消しても、もう片方は残ります。取り込み済みの枝は片づけておくと、一覧が見やすくなります。

公式の説明は GitHub のリモートリポジトリから変更を取得すると、VS Code のRepositories and remotesにあります。

ここまでで一周です

あとは、同じ流れを自分のリポジトリで繰り返すだけです

枝を切って、直して、記録して、送って、提案して、取り込んで、受け取る。 Git と GitHub でやることは、ほとんどこの繰り返しです。忘れたら、その章に戻ってきてください。

前の章へ戻る/章の一覧へ