GitHubをはじめよう

第8章

他の人の変更を受け取る

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

この章が終わると
fetch と pull の違いを説明でき、ずれたときに直せる状態
用意するもの
第7章で取り込んだ Pull Request。新しく入れるものはありません。

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

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

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

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

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

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

ターミナルで進める

  1. 01 / 11

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

    いまいるのは add-usage の枝です。ここから本流へ戻って、進んだぶんを受け取ります。

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

    本流の枝 main へ戻ります。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ~/Documents/hello-github

VS Codeで進める

  1. 01 / 11

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

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

    hello-github
  2. 02 / 11

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

    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 はまだ変わっていません。フェッチは手元のファイルに手を付けないので、いつ押しても安全です。

    hello-github
  6. 06 / 11

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

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

    hello-github
  7. 07 / 11

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

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

    hello-github
  8. 08 / 11

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

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

    hello-github
  9. 09 / 11

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

    hello-github
  10. 10 / 11

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

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

    hello-github
  11. 11 / 11

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

    hello-github

AI エージェントで進める

  1. 01 / 10

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

    いまいるのは add-usage の枝で、手元はまだ古いままです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ~/Documents/hello-github

この章で覚えること

  1. 1

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

  2. 2

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

  3. 3

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

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

ここまでで一周です

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

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

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