Dance with Agents

STEP 9 / 11

GitHubに預ける

Gitの履歴は、手元のパソコンにしかありません。GitHubは、それを無料で預かってくれるサービスです。消えず、別のパソコンからも続けられ、人にも見せられます。

このステップを終えると

  • ✓GitとGitHubの違いが、一言で言える
  • ✓GitHubのアカウントを作った
  • ✓SSHの鍵の登録が済んで、手元とGitHubがつながった
  • ✓作ったものをGitHubに預けられた
目安の時間:
40分ほど
お金:
かかりません。無料のプランで足ります

GitHubとは何か。Gitとどう違うのか

前のステップで、Gitという「記憶を持つフォルダ」を手元に用意しました。ここで登場するGitHubは、名前がそっくりですが別物です。 先にそこを分けておきます。

何か どこにある
Git 変更の履歴を記録する仕組み あなたのパソコンの中
GitHub その履歴ごと預かってくれるサービス インターネット上

前のステップで、Gitは「いつでも、動いていたところまで戻れる」道具だと書きました。ただし、その履歴はあなたのパソコンの中に記録されています。パソコンが壊れれば、履歴ごと消えます。

GitHubは、その置き場所を外に用意してくれるところです。作ったものと履歴をまるごと預けられて、個人で使うぶんには無料で足ります。

関係はこうです。Gitだけなら、GitHubが無くても記録は取れます。 逆に、手元で作ったものをGitHubに送るには、Gitが要ります。 預けるものを作るのがGit、預かるのがGitHubだからです。

「Hub」は「集まる場所」という意味です。Gitで作った履歴が集まってくる場所、と思っておくと、名前が似ていることにも納得がいきます。

なぜ、わざわざネット上に置くのか

手元で動いているなら、それでいいのでは——と思うかもしれません。理由は3つあります。

  • 消えない。 パソコンが壊れても、作ったものは残ります
  • どこからでも続けられる。 別のパソコンでも、同じ続きから始められます
  • 人に見せられる。 URLを1つ渡すだけで済みます

そしてもう1つ、エージェントと組んだときに助かる理由があります。GitHubに置いてあると、別のパソコンやブラウザ上のエージェントからも、同じものを触れるようになります。手元のフォルダに閉じ込めておくと、そこができません。

順番は、GitHub側で先に作る

ここは知らないと遠回りします。手元で作ってから後でGitHubにつなぐのではなく、GitHub側で先に作って、手元に持ってくるほうが圧倒的に簡単です。

後者なら、git init も git remote add も git push -u origin main も打たずに済みます。最初の関門が3つ減ります。 詳しい流れは作業の始め方に書きました。

アカウントを作る

数分で終わります。ただ、後から変えにくいところが2つあるので、そこだけ先に。

  • ユーザー名 — URLの一部になります。変えると前のURLがつながらなくなるので、長く使えるものを
  • メールアドレス — 設定しだいで、コミットのたびに公開されます。GitHubには非公開用のアドレスに置き換える設定があるので、先に入れておくと安心です

このあたりはGitHubのアカウントを作るにまとめました。2段階認証の設定も、ここで済ませてしまってください。

そもそも「鍵」とは何か

手順の前に、ここを説明しておきます。知らないまま作業すると、何をやらされているのか分からないまま終わります。

GitHubは世界中の誰でもアクセスできる場所です。だから「今つないできたのは、確かにあなたです」と証明する仕組みが要ります。それが鍵です。

パスワードを毎回打つ代わりに、パソコンの中に鍵を置いておいて、それで本人確認する——という方式だと思ってください。家の鍵と同じで、持っている人だけが入れます。

そして、この鍵は2つで1組です。

どうするか
秘密鍵 自分のパソコンから絶対に出さない。 実印のようなもの
公開鍵 GitHubに渡す。 人に見られても問題ない

GitHubに登録するのは公開鍵のほうだけです。「鍵を登録する」と言うとき、渡しているのはこちらです。

鍵を登録する——ここが一番ややこしい

この回でいちばん手数が多いのがここです。

普通の解説だと、こういう手順になります。鍵を作るコマンドを打つ → 出来た鍵ファイルの場所を探す → 中身を正確にコピーする → GitHubの設定画面のどこかを探す → 貼り付ける。どこか1つ間違えるだけで動かず、しかもどこで間違えたか分かりません。

これを、コマンド1つに置き換えられます。 GitHubをターミナルから操作するghという道具を使います。

brew install gh                                 # Mac
winget install --id GitHub.cli --source winget  # Windows

Macのbrew(Homebrew)は、はじめから入っているものではありません。 command not found: brew と言われたら、ghの前にHomebrewを導入するところからになります。WindowsのwingetのほうはOSに付いてきます(Windows 11と、比較的新しいWindows 10)。どちらのOSでも、GitHub CLIの配布ページからインストーラを落としてダブルクリックする道もあります。

インストールしたら、これだけです。

gh auth login

あとは対話形式で聞かれるので、順に答えていきます。ただし、一箇所だけ、選び方で結果が変わる質問があります。

Gitの通信方法を聞かれたら、SSHを選んでください。 公式のマニュアルには、sshを指定した場合の動きとして「prompting to create and upload a new key if one is not found」——鍵が見つからなければ、作ってGitHubに登録するところまで聞いてくれる、と書かれています。HTTPSでもGitHubとのやり取りはできます(パスワードの代わりにトークンを使う形になり、それはghが裏で預かってくれます)。ただ、そちらではこの処理が走らず、鍵は作られません。

手順の全体と、詰まったときの対処はGitHubに鍵を登録する最短コースにまとめました。

置いてみる

つながったら、あとは短いです。

  1. GitHubでリポジトリを作る(gh repo create でも、ブラウザからでも)
  2. 手元に持ってくる — git clone
  3. その中で作業して、区切りで git commit
  4. 送る — git push

公開か非公開かは、作るときに選べます。 迷ったら非公開(Private)にしてください。設定はあとから切り替えられますが、一度公開したものは、見られた・コピーされた前提で考えるしかありません。

そして——ここもエージェントに任せていい工程です。「これGitHubに上げておいて」で通ります。

つまずいたら

  • Permission denied (publickey) と表示される — 鍵がつながっていません。gh auth login をやり直して、通信方法でSSHを選ぶのが早いです(HTTPSで認証していても、git@github.com:で始まるURLでcloneすればこのエラーになります)
  • どのリポジトリに送っているか不安 — git remote -v で送り先が出ます。エージェントに「今の送り先どこ?」と聞いてもいいです
  • 間違えて公開してしまった — すぐ非公開に戻したうえで、含まれていた鍵やパスワードは作り直してください。 一度ネットに流れたものは、削除しても見られた前提で動くのが安全です。この話は次のステップで扱います
  • 「リモート」がどっちの意味か分からない — Gitの文脈と接続の文脈で別物です。Gitにおけるリモートとローカルの違いへ

ここまでで、形が完成します

clone して、cd して、エージェントを起動する。作業の始め方が、この3行に決まりました。

ただし、clone を打つのはそのリポジトリで最初の1回だけです。手元にフォルダが届いてしまえば、次の日からは cd して起動する2行で始まります。この形は作業の始め方に書きました。

残りは、安心して使い続けるための土台です。

次は STEP 10エージェントを安全に使う →守るのは3つだけ。削除する操作は目で確認する、APIキーやSSHの鍵はリポジトリに置かない、「全部許可」は最後の手段。ここで土台ができます。

このステップに関する記事

手元に置いておくと便利な早見表

寄り道(読まなくても先に進めます)

このステップに関係するカテゴリ