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に鍵を登録する最短コースにまとめました。
置いてみる
つながったら、あとは短いです。
- GitHubでリポジトリを作る(
gh repo createでも、ブラウザからでも) - 手元に持ってくる —
git clone - その中で作業して、区切りで
git commit - 送る —
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行で始まります。この形は作業の始め方に書きました。
残りは、安心して使い続けるための土台です。