Git と GitHub 入門版 0.5.16(ドラフト) ・ 2026-10-24 ・ 作成者 chitchi1216

第4章 / 目安 70〜90分

GitHub と連携する:送る・受け取る

この章でできるようになること

4-1. ローカルとリモート

第3章で作った記録は、自分のパソコンの中だけにありました。これをローカルリポジトリといいます。GitHub に置く、インターネット上のリポジトリはリモートリポジトリです。この章では、2つの間で記録をやりとりします。

あなたのパソコン ローカル リポジトリ C:\work\my-notes インターネットの向こう リモート リポジトリ(GitHub) 名前は origin push(送る) pull(受け取る) 新しいコピー 別のフォルダ・別のパソコン clone(丸ごと複製)
push で送り、pull で受け取る。clone は、リモートの丸ごとのコピーを作る
言葉意味名前の由来
リモート(remote)離れた場所にあるリポジトリ。GitHub 上のものremote = 遠く離れた
originリモートに付ける、いつもの名前(「GitHub の、あのリポジトリ」の呼び名)origin = もと、起点
push自分の記録を、リモートに送るpush = 押し出す
pullリモートの記録を、自分のパソコンに受け取るpull = 引っ張る
cloneリモートを、まるごと自分のパソコンに複製するclone = 複製

4-2. GitHub に「自分だ」と伝える仕組み

GitHub に記録を送るには、「これは自分だ」と GitHub に伝える(認証する)必要があります。GitHub は、Git での操作に、パスワードを使えません。代わりに、Git for Windows に入っている「Git Credential Manager」が、ブラウザを開いて、ログインを手伝ってくれます。

  1. 初めて git push を打つと、ブラウザの画面(またはウィンドウ)が開く
  2. GitHub に、ログインする
  3. 「許可しますか?」と聞かれたら、許可(Authorize)する
  4. ターミナルに戻ると、送信が進んでいる

一度許可すると、パソコンが覚えてくれるので、次からは聞かれません。

ブラウザで開く、GitHub のサインイン画面
ブラウザで開く、GitHub のサインイン画面。すでにログインしている場合は、この画面を飛ばして、許可(Authorize)の画面になることがあります
GitHub のパスワードを、ターミナルに打たない ターミナルで「Password:」と聞かれても、GitHub のパスワードは使えません。ブラウザのログイン画面を使います。画面が開かないときは、第4章の「うまくいかないとき」を見てください。
「二要素認証」を求められることがあります GitHub は、アカウントを守るために、ログインのとき、パスワードのほかに「スマートフォンのアプリのコード」などの確認(二要素認証)を求めることがあります。案内に従って設定してください。
☕ ここで一区切りしてOK 次は「4-3. 実際にやってみよう」からです。

4-3. 実際にやってみよう

GitHub に置くと、自宅のパソコンと、職場のパソコンのように、2台のパソコンで、同じ記録を使えるようになります。この章では、パソコンが1台しかなくても体験できるように、同じ GitHub のリポジトリから、フォルダを2つ作って、「いつものパソコン」と「2台目のパソコン(役)」のように使い分けます。

GitHub リモートリポジトリ(origin) いつものパソコン C:\work\my-notes (第3章で作ったもの) 2台目のパソコン(役) C:\work\my-notes-copy (clone で作る) ① push ④ pull ② clone ③ push
① 送る → ② 2台目に複製する → ③ 2台目で変えて送る → ④ いつものパソコンで受け取る
演習は C:\work の中で これまでと同じく、OneDrive の外にある C:\work の中で行います。

手順1:設定を1つ足す(一度だけ)

git config --global pull.rebase false

GitHub の変更を取り込む git pull の「動き方」を決める設定です。今は、「後で出てくる、つまずきを防ぐための設定」と思って、そのまま打ってください(第6章で意味が分かります)。

手順2:GitHub に、空のリポジトリを作る(ブラウザで)

GitHub の画面は、英語で表示されます。英語と日本語の対応を、下に書いておきます。

  1. ブラウザで https://github.com を開き、ログインする
  2. 右上の自分のアイコン(丸い写真)をクリックし、メニューから「Repositories」(リポジトリの一覧)を選ぶ
  3. 一覧の画面の右側にある、青い「New」ボタンをクリックする(右上の + → 「New repository」からも、同じ画面に行ける)
  4. 「Repository name」に my-notes と入力する(「Owner」は、自分のユーザー名のままでよい)
  5. 「Choose visibility」は、初期値が「Public」(誰でも見られる)です。「Private」(自分だけが見られる)に変える
  6. 「Add README」は「Off」のままにする。「Add .gitignore」は「No .gitignore」、「Add license」は「No license」のままにする(すべて空のまま)
  7. 右下の青い「Create repository」をクリックする
GitHub のダッシュボード。右上の自分のアイコンをクリックして開いたメニューで、Repositories を選ぶ
右上の自分のアイコン(赤い矢印)をクリックし、メニューから「Repositories」(赤い丸)を選ぶ。(ほかのリポジトリの名前は、黒く塗りつぶしてあります)
Repositories の一覧の画面。右側に、青い New ボタンがある
リポジトリの一覧の画面。右側の、青い「New」ボタンを押す
Create a new repository の画面。名前に my-notes を入力し、Private を選び、Add README は Off のまま
入力したあとの画面。my-notes と入力すると、「my-notes is available.」(その名前は使えます)と出ます。「Private」を選び、「Add README」は「Off」のままで、右下の「Create repository」を押します(押すと「Creating repository…」と表示されます)
画面の表示(英語)意味
Create a new repository新しいリポジトリを作る
Owner持ち主(自分のユーザー名)
Repository nameリポジトリの名前
Description説明(空でよい)
Choose visibility / Public / Private公開範囲を選ぶ/誰でも見られる/自分(と招待した人)だけ
Add README / Add .gitignore / Add licenseREADME を足す/記録しないファイルの指定を足す/ライセンスを足す(今回はすべて足さない)
Create repositoryリポジトリを作る(実行ボタン)
「Add README」を Off のままにする理由 今回は、すでにあるローカルのリポジトリ(my-notes)を、GitHub に送ります。GitHub 側に先にファイルがあると、記録が食い違って、送れなくなります。空のまま作ってください。

作ると、次のような画面になります。「…or push an existing repository from the command line」(既存のリポジトリを、コマンドで送る)という見出しのところに、3行のコマンドが出ます。その1行目の URL を、使います。

作成直後のリポジトリの画面。Quick setup と、push an existing repository from the command line のコマンドが表示されている
作成直後の画面。名前の横に「Private」と出ています。上の「Quick setup」の HTTPS(SSH ではなく)が選ばれている URL の、右端のコピーのボタンを押すと、URL をコピーできます。下の「…or push an existing repository from the command line」の3行が、これから打つコマンドです
画面の3行のうち、打つのは2行(1行目と3行目) git remote add origin …(1行目)と、git push -u origin main(3行目)を使います。2行目の git branch -M main は、枝の名前を main にするコマンドですが、第3章の設定で、すでに main なので、打たなくて構いません(打っても、害はありません)。

手順3:ローカルと、リモートを結びつける

PowerShell で、第3章の my-notes に移動します。そして、GitHub に表示された URL をコピーして、次のコマンドを打ちます(ユーザー名 は、自分の GitHub ユーザー名です)。

cd C:\work\my-notes
git remote add origin https://github.com/ユーザー名/my-notes.git
git remote -v
PS C:\work> cd C:\work\my-notes
PS C:\work\my-notes> git remote add origin https://github.com/chitchi1216/my-notes.git
PS C:\work\my-notes> git remote -v
origin  https://github.com/chitchi1216/my-notes.git (fetch)
origin  https://github.com/chitchi1216/my-notes.git (push)

「origin という名前で、この URL のリモートを登録する」という意味です。git remote -v で、登録を確認できます(fetch は受け取り用、push は送信用で、同じ URL が2行出ます)。

💡 remote add =「リモートを追加する」。-v は verbose(くわしく)の頭文字です。

URL は、コピーして貼り付ける URL は長いので、GitHub の画面の「コピー」ボタンで、コピーしましょう。PowerShell に貼り付けるには、右クリックするか、Ctrl + V を押します。ユーザー名 の部分を、間違えやすいところです。

手順4:GitHub に送る(push)

git push -u origin main

初めてのときは、ブラウザが開くので、ログインして許可してください(4-2)。送信が進むと、次のように表示されます(途中の行は、人によって違います)。

PS C:\work\my-notes> git push -u origin main
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 480 bytes | 480.00 KiB/s, done.
Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/chitchi1216/my-notes.git
 * [new branch]      main -> main
branch 'main' set up to track 'origin/main'.

[new branch] main -> main と出れば、送信できています。これで、2つのコミットが、GitHub に上がりました。

💡 git push -u origin main =「origin に、main を送る」。-u は、upstream(上流)の頭文字で、「今後は、この組み合わせを覚えて」という意味です。一度付ければ、次からは git push だけで済みます。

状態を見てみましょう。

git status
PS C:\work\my-notes> git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Your branch is up to date with 'origin/main' は、「自分の main は、GitHub の main と同じです」という意味です。

手順5:GitHub の画面で、確かめる

ブラウザで、https://github.com/ユーザー名/my-notes を開き直して(F5 で再読み込み)、次のことを確認してください。

push 後の GitHub のリポジトリ画面。hello.txt と、コミット数が表示されている
push のあとの、GitHub のリポジトリ画面。hello.txt と、最新のコミットのメッセージ、「3 Commits」(コミットの数)が見えます(この写真は、コミットを3つ作った人のものです)。記録した人の名前(user.name)が、左上に出るので、第0章の設定が大切です。(メールアドレスは、黒く塗りつぶしてあります)
☕ ここで一区切りしてOK 次は「手順6:clone で、2台目のパソコン(役)を用意する」からです。

手順6:clone で、2台目のパソコン(役)を用意する

次に、同じリポジトリを、別のフォルダに複製します。まず、C:\work に移動してから、clone します。

cd C:\work
git clone https://github.com/ユーザー名/my-notes.git my-notes-copy
cd my-notes-copy
git log --oneline
PS C:\work> git clone https://github.com/chitchi1216/my-notes.git my-notes-copy
Cloning into 'my-notes-copy'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (6/6), done.
PS C:\work> cd my-notes-copy
PS C:\work\my-notes-copy> git log --oneline
7b1e4d8 (HEAD -> main, origin/main, origin/HEAD) Add second line to hello.txt
3f2a9c1 Add hello.txt

履歴も、ファイルも、そっくりそのまま複製されました。git clone URL 新しいフォルダ名 の形で、新しいフォルダが作られます。my-notes-copy を、2台目のパソコンだと思って、使います。本当に2台目のパソコンがある人は、そちらで clone しても構いません(そのときは、2台目のパソコンにも、第0章の Git のインストールと設定が必要です)。

git clone と git log --oneline を実行した実際の画面
実際の画面の例(手順6)。Cloning into 'my-notes-copy'... のあと、git log --oneline で、my-notes と同じ履歴(origin/main などの目印つき)が見えます。数字や、記録のメッセージは、人によって違います
clone は、リポジトリの「外」で clone を、my-notes のようなリポジトリの中で打ってはいけません。リポジトリの中に、リポジトリができてしまい、混乱のもとになります。必ず、C:\work に移動してから打ってください。
最後のフォルダ名(my-notes-copy)を、付け忘れない git clone URL だけで、フォルダ名を付けないと、Git は、リポジトリと同じ名前(my-notes)の新しいフォルダを作ろうとします。今回は、C:\work に、第3章で作った my-notes が、すでにあるので、次のエラーになります。
PS C:\work> git clone https://github.com/chitchi1216/my-notes.git
fatal: destination path 'my-notes' already exists and is not an empty directory.
「my-notes という場所は、すでにあって、空ではありません」という意味です。壊れてはいません。URL のあとに、半角スペースを空けて、別の名前(my-notes-copy)を付けて、打ち直してください。
git clone https://github.com/ユーザー名/my-notes.git my-notes-copy
git init と git clone の違い git init は、手元のフォルダを、新しいリポジトリにするものです。git clone は、すでにあるリポジトリ(GitHub など)を、まるごと複製するものです。clone すると、origin の設定も、自動で済みます。

手順7:2台目で変更して、push する

2台目(my-notes-copy)にいる状態で、hello.txt に3行目を足して、記録し、GitHub に送ります。

notepad hello.txt

third line と1行足して、最後に Enter で改行して保存し、閉じます。続けて、次を打ちます。

git add hello.txt
git commit -m "Add third line"
git push
PS C:\work\my-notes-copy> git add hello.txt
PS C:\work\my-notes-copy> git commit -m "Add third line"
[main c5d2e8a] Add third line
 1 file changed, 1 insertion(+)
PS C:\work\my-notes-copy> git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/chitchi1216/my-notes.git
   7b1e4d8..c5d2e8a  main -> main

今回は、git push だけで送れました。clone で作ったフォルダは、-u に当たる設定が、最初から入っているためです。

2台目(my-notes-copy)で git add、git commit、git push を実行した実際の画面
実際の画面の例(手順7)。git add → git commit -m → git push。最後の 36e3099..b94797c main -> main は、「GitHub の main が、36e3099 から b94797c まで進んだ」という意味です。ID は、人によって違います

手順8:いつものパソコンで、受け取る(pull)

今度は、いつものパソコン(my-notes)に戻ります。ここでは、まだ3行目のことを知りません。

cd C:\work\my-notes
type hello.txt
git pull
type hello.txt
PS C:\work\my-notes> type hello.txt
hello git
second line
PS C:\work\my-notes> git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Unpacking objects: 100% (3/3), 294 bytes | 14.00 KiB/s, done.
From https://github.com/chitchi1216/my-notes
   7b1e4d8..c5d2e8a  main       -> origin/main
Updating 7b1e4d8..c5d2e8a
Fast-forward
 hello.txt | 1 +
 1 file changed, 1 insertion(+)
PS C:\work\my-notes> type hello.txt
hello git
second line
third line

3行目が、受け取れました。「Fast-forward」は、「自分の記録を、そのまま先に進めただけ」という意味で、最も単純な受け取り方です。

いつものパソコン(my-notes)で git pull を実行した実際の画面。Fast-forward と出ている
実際の画面の例(手順8)。Updating 36e3099..b94797c と Fast-forward が出て、hello.txt が1行増えた(1 +)ことが分かります
これが、送る・受け取るの基本のくり返し 片方で変更して push → もう片方で pull して受け取る。2台のパソコンを使うときの、基本の動きです。作業を始める前に pull、終わったら push と覚えておきましょう。この動きは、あとで、ほかの人と一緒に作業するときにも、そのまま使えます。次の第5章では、この流れを、毎日の習慣にします。

💡 pull は、fetch(取ってくる)と merge(合わせる)を、続けて行うコマンドです。merge は、第6章で学びます。

ここまでの流れ(まとめ)

やりたいことコマンド
GitHub のリポジトリを、自分のパソコンに複製する(最初の1回)git clone URL
手元のリポジトリを、初めて GitHub に結びつけるgit remote add origin URL → git push -u origin main
自分の記録を、GitHub に送るgit push
GitHub の記録を、自分のパソコンに受け取るgit pull
GitHub に送ったものは、消しても履歴に残る パスワードや、他人に見せたくない情報を、ファイルに書いて push しないでください。あとでファイルから消しても、過去の履歴の中に、残り続けます。Private のリポジトリでも、あとで招待した共同作業者には見えます。
☕ コーヒーブレイク:Git は「分散型」。GitHub が消えても、記録は残る?(読み飛ばしてOK)

手順6で clone したとき、履歴まで、まるごと複製されたことに気づきましたか? これは、Git の大きな特徴です。Git は「分散型」と呼ばれる仕組みで、clone した、すべてのパソコンの中に、完全な履歴のコピーがあります。自分の2台のパソコンでも、ほかの人と一緒に使うときでも、同じです。

GitHub 受け渡しの場所 いつものパソコン完全な履歴 2台目のパソコン完全な履歴 一緒に作る人 A完全な履歴 一緒に作る人 B完全な履歴
どのパソコンも、完全なコピーを持っている。GitHub は、受け渡しの場所

※ 「GitHub の名前」の由来など、細かい経緯には諸説あります。

4-4. チャレンジ

必須ではありません。手順8までが終わった状態から始めます。

🎯 チャレンジ1 ★☆☆ GitHub の画面で編集して、pull で受け取る

GitHub の画面(ブラウザ)で hello.txt を編集して、fourth line という4行目を足してください。そのあと、my-notes フォルダで、その変更を受け取って、中身を確かめましょう。

ヒント

GitHub のリポジトリ画面で hello.txt をクリックし、右上の鉛筆のマーク(Edit)を押すと、ブラウザで編集できます。最後の行の下に、fourth line と入力します。編集後は、右上の青い 「Commit changes...」を押し、出てくる画面で、次のように記録します。

画面の項目入力・選択するもの
Commit messageコミットのメッセージ。最初から、メッセージが入っています(GitHub が、変更の内容から提案してくれます。Add fourth line to hello.txt や Update hello.txt など)。内容が合っていれば、そのままで構いません。自分で書き直しても構いません
Extended descriptionくわしい説明(任意)。空のままで構いません(「Add an optional extended description…」という、薄い文字は、入力の例です)
Commit directly to the main branchこれを選んだままにします(main に、直接記録する)。Create a new branch for this commit and start a pull request は、第7章で使うので、今回は選びません

最後に、右下の青い「Commit changes」を押して、記録します。

Commit changes の画面。Commit message にメッセージが入り、Commit directly to the main branch が選ばれている
「Commit changes...」を押すと出る画面。Commit message には、提案されたメッセージが入っています。Extended description は空のまま。「Commit directly to the main branch」が選ばれているのを確認して、右下の「Commit changes」を押します。「新しい枝を作って、pull request を始める」のほうは、選びません
こたえと解説

GitHub で「Commit changes」を押すと、GitHub 側に新しいコミットができます。そのあと、手元で次を打ちます。

cd C:\work\my-notes
git pull
type hello.txt

4行目が、手元に届いていれば成功です。これは、「外出先で、スマートフォンのブラウザから GitHub を開いて、変更した」場面と同じです。GitHub の画面で直接編集できることも、覚えておくと便利です。

GitHub の画面でファイルを編集し、Commit changes を押す画面
GitHub の画面で編集する。ファイルの内容が、エディタに出ます。右上の青い「Commit changes...」を押すと、記録の画面が出ます。(この写真は、いくつか行を足した人のものなので、行の内容は、あなたの画面と違います)
🎯 チャレンジ2 ★★☆ 「遅れている」ことを、確かめる

pull を打つ前に、「GitHub のほうが、自分より進んでいるか」を確かめる方法があります。チャレンジ1の編集を、もう一度、別の内容(fifth line)で行い、そのあと、pull はまだ打たずに、git fetch と git status を打って、表示を読んでください。

ヒント

fetch は、「GitHub の最新の情報を、取ってくるだけ」のコマンドです。自分のファイルは、まだ変わりません。

こたえと解説
git fetch
git status
PS C:\work\my-notes> git status
On branch main
Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.
  (use "git pull" to update your local branch)

nothing to commit, working tree clean
git fetch、git status、git pull を実行した実際の画面。status に behind と出ている
実際の画面の例。git fetch のあと、git status に「Your branch is behind 'origin/main' by 1 commit, and can be fast-forwarded.」と出ています。続けて git pull を打つと、Fast-forward で追いつきます

behind 'origin/main' by 1 commit は、「GitHub の main より、1コミット遅れています」という意味です。「fetch で確認 → pull で受け取る」と、2段階に分けると、受け取る前に、状況を確かめられます。

コマンド働き手元のファイル
git fetchGitHub の最新情報を、取ってくるだけ変わらない
git pull取ってきて、手元に合わせる変わる
🎯 チャレンジ3 ★★★ push が「拒否」されたら

2台のパソコンを使っていて、片方で pull を忘れたまま、作業してしまったときに出会うエラーです(ほかの人と一緒に作業するときにも、一番よく出会います)。次の手順で、わざと起こして、直してみましょう。

始める前に チャレンジ1・2をやった人は、先に、my-notes と my-notes-copy の両方で git pull を打って、2つのフォルダを最新にしてから始めてください。最新でないと、手順1でも、拒否されてしまいます。
  1. 2台目(my-notes-copy)で、copy.txt という新しいファイルを作って(New-Item copy.txt)、add・commit・push する。
  2. いつものパソコン(my-notes、まだ pull していない)で、hello.txt に edit in original と1行足して、add・commit する。
  3. my-notes で、git push を打つ。

3で、何が起きますか? どうすれば、送れるようになりますか?

ヒント

エラーメッセージの hint: の行に、答えが書いてあります。「GitHub には、自分が持っていない記録がある」と読めます。

こたえと解説
PS C:\work\my-notes> git push
To https://github.com/chitchi1216/my-notes.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/chitchi1216/my-notes.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
push が rejected で拒否され、pull のあとにもう一度 push して成功した実際の画面
実際の画面の例。git push が、赤い文字で「! [rejected] main -> main (fetch first)」と拒否されています。git pull のあと(メモ帳を閉じたあと)に、もう一度 git push を打つと、main -> main で送れています

rejected(拒否された)と出ます。GitHub に、自分の知らない新しい記録(copy.txt のコミット)があるためです。GitHub は、「先に、その記録を取り込んでから、送って」と言っています。壊れてはいません。次のように、直します。

git pull
git push

git pull を打つと、メモ帳が開くことがあります。Merge branch 'main' of … という1行が書かれた、「2つの流れを、合わせた」記録のメッセージです。何も変えずに、保存して(Ctrl + S)、メモ帳を閉じてください。すると、合わせる作業が終わります。メモ帳が開いている間は、ターミナルに hint: Waiting for your editor to close the file...(エディタが閉じるのを待っています)と出て、閉じると unix2dos / dos2unix の行が出ます。第3章と同じ、無視してよいお知らせです。そのあと git push で、送れます。

PS C:\work\my-notes> git pull
From https://github.com/chitchi1216/my-notes
   c5d2e8a..5a13927  main       -> origin/main
hint: Waiting for your editor to close the file... unix2dos: converting file C:/work/my-notes/.git/MERGE_MSG to DOS format...
dos2unix: converting file C:/work/my-notes/.git/MERGE_MSG to Unix format...
Merge made by the 'ort' strategy.
 copy.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 copy.txt

「Merge made by …」は、2つの別々の変更が、ひとつに合わさったことを表します(第6章で、くわしく学びます)。今回は、別々のファイル(hello.txt と copy.txt)を変えたので、自動で合わさりました。同じファイルの同じ場所を変えると、自動では合わせられず、「コンフリクト」になります(第8章)。

git push --force は、使わない ネットで、「拒否されたら git push --force」という手順を見かけることがあります。これは、GitHub の記録を、強制的に上書きして、もう片方のパソコン(や、ほかの人)が送った記録を消してしまう危険な方法です。この教材では、使いません。拒否されたら、git pull してから git push です。

4-5. うまくいかないとき

こんなとき確認すること
ブラウザが開かず、ログインできないターミナルに、ログイン用のウィンドウが隠れていないか。それでも出なければ、PowerShell を閉じて、もう一度 git push を打つ。管理者や、一緒に学んでいる人に相談
会社や学校のパソコンで、Could not resolve host、Failed to connect、SSL certificate problem などの表示が出るブラウザで GitHub を開けても、会社のネットワークの設定で、Git からの通信だけが止められていることがあります。自分で設定を変えようとせず、表示されたメッセージをそのまま添えて、管理者に相談します(第0章「会社や学校のパソコンで学ぶ人へ」)
Authentication failed(認証に失敗)ログインした GitHub アカウントが、正しいか。このリポジトリを持っている人と、同じアカウントか
Repository not found(見つからない)URL の ユーザー名 や、リポジトリ名の綴りを確認する。git remote -v で、登録した URL を見る
remote origin already existsorigin は、すでに登録済み。git remote -v で、URL が正しいか確かめる
rejected(拒否)チャレンジ3を見る。git pull してから、git push
どこにいるか分からないpwd で場所を、git status で状態を確かめる
コマンドの早見表 この章のコマンドは、付録A「よく使うコマンド一覧」にも載せています。

確認クイズ

Q1. git push と git pull は、それぞれ、どちらの向きですか?

push は、自分のパソコン → GitHub(送る)。pull は、GitHub → 自分のパソコン(受け取る)。

Q2. git init と git clone の違いは?

git init は、手元のフォルダを、新しいリポジトリにする。git clone は、すでにあるリポジトリを、履歴ごと、まるごと複製する。

Q3. origin とは何ですか?

リモートリポジトリ(GitHub 上のリポジトリ)に付ける、いつもの名前。「もと」という意味。

Q4. 手元のリポジトリを GitHub に送るとき、GitHub 側のリポジトリを、空のまま作るのはなぜですか?

GitHub 側に先にファイル(README など)があると、記録が食い違って、送れなくなるため。

Q5. push が rejected されたとき、どうすればよいですか? また、やってはいけないことは?

git pull で、GitHub の新しい記録を取り込んでから、git push する。git push --force(強制的に上書きする)は、GitHub にある記録を消す危険があるので、使わない。

話し合おう・考えてみよう