Stage 1・初心者編 ー Lesson 1-6
リモートと連携しよう — git push と git pull
git remote add でリモートと紐付け、git push / git pull でコミットを送受信する
💡 たとえるなら
スマホの写真をクラウドにアップロードして共有するように、コミット履歴をネット上のリモートに保管します
ここまではすべて 自分のパソコンの中だけ で完結していました。最後に、コミット履歴を ネット上のリモートリポジトリ に保存する方法を学びます。これでパソコンが壊れても安心、しかも他のパソコンやチームと共有できるようになります。
リモートリポジトリってなに?
「Gitリポジトリを置いておけるサーバー上の場所」のことを リモート(リポジトリ) と呼びます。GitHub・GitLab・Bitbucket・社内のGitサーバー、すべてリモートの一例です。仕組みはどれも同じで、Gitコマンドからは「URL」で指定するだけ。
ローカル ↔ リモートの仕組み
リモートとの付き合い方には 2つの始まり方 があります:
my_project をリモートに上げる。→ 登録 → push → pull のステップ①〜④
→
git clone 一発(後半セクション)順に見ていきます。
A. 自分のローカルから始める(push / pull)
すでに手元に my_project がある前提で、これをリモートに上げて運用するパターン。
ステップ① リモートを用意する
リモートを置けるサービスはいろいろあります:
- GitHub — 世界で一番使われている。個人の学習用にも最適(このレッスン末尾のコラム参照)
- GitLab — 自社サーバーに立てやすい。企業導入も多い
- Bitbucket — Atlassian製。Jiraと連携が強い
- 自社のGitサーバー — sshアクセスできるサーバーがあれば自分でも立てられる
どれを使っても、Git本体から見れば「URLで指す場所」というだけ。やり方は同じです。
このレッスンでは、リモートを用意できた前提で進めます。手元には次のような リポジトリのURL が手に入っているはずです:
https://github.com/yourname/my_project.git
git@gitlab.example.com:yourname/my_project.git
ステップ② リモートを登録する:git remote add
ターミナルで my_project フォルダの中に入って、次のコマンドを打ちます。URL は自分のものに置き換えてください。
origin= リモートのニックネーム(慣習でoriginを使う)- URL = リモートリポジトリのアドレス
ステップ③ ネットに送る:git push
いよいよコミット履歴をリモートに送ります。
-u= 「次回からはgit pushだけで送れるようにする」おまじない(最初の1回だけ)origin main= 「originというリモートのmainブランチに送る」
成功したら、ブラウザでリモートのリポジトリページを再読み込みしてみてください。memo.txt とコミット履歴が表示されているはずです。
ステップ④ ネットから取り込む:git pull
別のパソコンや他のメンバーがリモートに変更を加えたら、git pull でそれを自分の手元に取り込みます。
「Already up to date.」は「もう最新だよ」という意味。誰も新しい変更を加えていなければこう出ます。
B. 他人のリモートから始める(git clone)
ここからは 完全に別の話。すでに誰かが用意したリモート(OSSプロジェクト、チームのリポジトリなど)から 手元に持ってきて開発をスタートする パターンです。Aの「git init + remote add + pull」を全部まとめて1コマンドにしたのが git clone。
git clone:リモートを丸ごと取得
git init ではなく git clone で始めます。リモートの中身を丸ごとダウンロードして、ローカルリポジトリとして使える状態にしてくれます。
git clone は 新しいフォルダを作って、そこに git init + git remote add origin URL + git pull を全部まとめてやってくれる イメージ。チームに参加するときの最初の一歩です。
clone できる ≠ push できる
ここがハマりどころ。clone(読み取り)と push(書き込み)は権限が別 です。
公開リポジトリなら **誰でも可能**。OSSプロジェクトを clone して手元で動かすのに権限は要りません。
非公開リポジトリは「メンバーに招待されている」など、読み取り権限が必要です。
remote: Permission to xxx/repo.git denied to user. fatal: unable to access ...: The requested URL returned error: 403
他人のOSSに貢献したいときは「fork」
OSSプロジェクトに改善を提案したい場合、本家には push 権限が無いので 「fork」 という仕組みを使います:
git clonegit push(自分のだから push できる)fork や Pull Request は GitHub特有の仕組み で、Git本体の機能ではありません。詳しくは GitHub のドキュメントを参照してください。
衝突(コンフリクト)が起きたら
ローカルとリモートの両方で 同じファイルの同じ行 を別々に編集していると、Gitは「どっちを採用すればいいか分からない」と困ります。これが 衝突(コンフリクト) です。怖そうな名前ですが、Gitが勝手に上書きしないように立ち止まってくれているだけです。
よくある2つのパターン
git push は失敗します。→ まず
git pull で取り込んでから、もう一度 push します。git pull が止まります。→ ファイルを手で直して、
add + commit で解決します。衝突したときのターミナル表示
CONFLICT の文字を見たら、衝突したファイル(この例では memo.txt)を開いてみましょう。Gitが両方の変更をマーカーで囲んで残してくれています。
<<<<<<< HEADから=======までが 自分側の変更=======から>>>>>>> origin/mainまでが リモート側の変更
解決の手順
<<<<<<< ======= >>>>>>> のマーカー行も忘れずに削除git add <ファイル名> でステージングgit commit で「衝突を解決した」コミットを作るgit push でリモートに送る衝突解決の細かいテクニックは Stage 2-3「コンフリクトを解決する」 で深掘りします。今は「マーカーを直して add + commit する」だけ覚えておけばOKです。
コマンド早見表
| コマンド | 何をする? |
|---|---|
| git remote add origin URL | リモートを登録する |
| git remote -v | 登録済みリモート一覧を表示 |
| git push -u origin main | ローカル→リモートへ送る |
| git pull origin main | リモート→ローカルへ取り込む |
| git clone URL | リモートを丸ごと取得して始める |
このレッスンのまとめ
git remote add でリモートを登録できるgit push でローカルの変更をリモートに送れるgit pull でリモートの変更を取り込めるgit clone で他人のリモートから始められる🎉 Stage 1 完走おめでとうございます!
次の Stage 2 — 中級編 では、ブランチ を切って機能ごとに作業を分け、間違いを安全に取り消す技術を身につけていきます。
📌 コラム:GitHubで試してみよう
「とりあえず手を動かしてみたい」という方は、GitHub を使うのが一番手っ取り早いです。無料、登録もすぐ、ググったときの情報量も世界一。
最短手順:
- github.com にアクセス → アカウント作成
- ログイン後、右上の 「+」 → 「New repository」
- Repository name を入力(例:
my_project) - Public / Private を選ぶ(学習用なら Private が安心)
- 「Add a README」などのチェックは付けない(空のリポジトリで作る)
- 「Create repository」 をクリック
- 表示された
https://github.com/yourname/my_project.gitのような URL をコピー - ターミナルに戻って
git remote add origin <そのURL>→git push -u origin main
GitHub側にすでにファイルがあると、ローカルとぶつかってpushが拒否されます。最初は必ず「空のリポジトリ」で作ってください。
GitHub には Pull Request・Issues・Actions などGit本体の枠を超えた機能が山ほどありますが、それらは このサイトの範囲外。GitHub単体の使い方は別のドキュメントを参照してください。
✏️ 理解度チェック
各問題、選んだ瞬間に正解と解説が表示されます。気軽に試してください。
- Q1. リモートリポジトリのURLをローカルに登録するコマンドは?
- Q2. ローカルのコミットをリモートに送るコマンドは?
- Q3. リモートの最新変更を取り込むコマンドは?