リモートリポジトリ
GitHubとの連携でコードをクラウドに管理しよう
リモートリポジトリとは?
リモートリポジトリは、インターネット上(またはネットワーク上)に ホスティングされたGitリポジトリです。ローカルのリポジトリと同期することで、 バックアップやチームでの共有が可能になります。
┌─────────────────┐ ┌─────────────────┐
│ ローカルリポジトリ │ push → │ リモートリポジトリ │
│ (あなたのPC) │ ← pull │ (GitHub) │
└─────────────────┘ └─────────────────┘
│ │
git commit 他の開発者も
git branch アクセス可能GitHub
最も人気のあるホスティングサービス。OSS開発の中心地。
GitLab
CI/CDが統合されたプラットフォーム。セルフホスト可能。
Bitbucket
Atlassian製。Jiraとの連携が強力。
GitHubでリポジトリを作成する
GitHubでリポジトリを作成したら、ローカルリポジトリと接続します。 2つのパターンがあります。
パターン1: ローカルから始める場合
# ローカルでプロジェクトを作成済みの場合
$ git init
$ git add .
$ git commit -m "初期コミット"
# GitHubのリポジトリをリモートとして登録
$ git remote add origin https://github.com/username/my-project.git
# ローカルの内容をリモートにアップロード
$ git push -u origin mainパターン2: GitHubから始める場合
# GitHubでリポジトリを作成した後、ローカルにコピー
$ git clone https://github.com/username/my-project.git
# clone したディレクトリに移動
$ cd my-project
# origin(リモート)は自動的に設定されている
$ git remote -v
origin https://github.com/username/my-project.git (fetch)
origin https://github.com/username/my-project.git (push)git remote - リモートの管理
origin はリモートリポジトリの デフォルト名です。複数のリモートを登録することもできます。
# リモートの一覧を表示
$ git remote -v
# リモートを追加
$ git remote add origin https://github.com/username/repo.git
# リモートのURLを変更
$ git remote set-url origin https://github.com/username/new-repo.git
# リモートを削除
$ git remote remove origin
# リモートの詳細情報
$ git remote show origingit push - リモートに送信
ローカルのコミットをリモートリポジトリにアップロードします。
# 基本のpush(main ブランチ)
$ git push origin main
# -u でupstreamを設定(初回のみ。以降は git push だけでOK)
$ git push -u origin main
# upstream設定後は省略可能
$ git push
# 新しいブランチをリモートにpush
$ git push -u origin feature/login
# タグをpush
$ git push origin v1.0.0
$ git push --tags # すべてのタグ注意: force push
git push --force はリモートの履歴を上書きするため、 チーム開発では原則使用禁止です。他のメンバーの作業を壊す可能性があります。 やむを得ない場合は --force-with-lease を使いましょう。
git pull / git fetch - リモートから取得
リモートリポジトリの最新の変更をローカルに取り込みます。fetch とpull には重要な違いがあります。
git fetch
リモートの変更をダウンロードするが、ローカルのブランチにはマージしない。 安全に差分を確認できる。
$ git fetch origin
$ git log origin/main
# 確認してからマージ
$ git merge origin/maingit pull
fetch + merge を一度に行う。手軽だが、コンフリクトに注意が必要。
# fetch + merge を同時実行
$ git pull origin main
# upstream設定後は省略可能
$ git pull
# rebaseで取り込む(履歴が綺麗になる)
$ git pull --rebaseおすすめ
慣れるまでは git fetch → git log origin/main で確認 → git merge origin/main の手順が安全です。
git clone - リポジトリの複製
リモートリポジトリの完全なコピーをローカルに作成します。 履歴やブランチもすべて含まれます。
# HTTPS でクローン
$ git clone https://github.com/username/repo.git
# SSH でクローン(SSH鍵の設定が必要)
$ git clone git@github.com:username/repo.git
# ディレクトリ名を指定してクローン
$ git clone https://github.com/username/repo.git my-folder
# 特定のブランチだけクローン
$ git clone -b develop https://github.com/username/repo.git
# 浅いクローン(最新の履歴だけ。大きなリポジトリ向け)
$ git clone --depth 1 https://github.com/username/repo.gitFork(フォーク)
Fork は、他の人のリポジトリを自分のGitHubアカウントに コピーする機能です。オープンソースプロジェクトに貢献する際の基本的な流れです。
元のリポジトリ (upstream) あなたのフォーク (origin)
┌──────────────────────┐ Fork ┌──────────────────────┐
│ user-a/awesome-lib │ ──────▶ │ your-name/awesome-lib│
└──────────────────────┘ └──────────────────────┘
│
git clone
│
┌──────────────────┐
│ ローカルリポジトリ │
└──────────────────┘# 1. GitHubでForkボタンをクリック
# 2. 自分のフォークをクローン
$ git clone https://github.com/your-name/awesome-lib.git
$ cd awesome-lib
# 3. 元のリポジトリをupstreamとして登録
$ git remote add upstream https://github.com/user-a/awesome-lib.git
# 4. upstreamの最新を取得
$ git fetch upstream
$ git merge upstream/main
# 5. 変更を加えてPull Requestを送るSSH鍵の設定(推奨)
SSH鍵を設定すると、push/pullの度にパスワードを入力する必要がなくなります。
# 1. SSH鍵を生成
$ ssh-keygen -t ed25519 -C "your-email@example.com"
# 2. 公開鍵の内容をコピー
$ cat ~/.ssh/id_ed25519.pub
# 3. GitHubの Settings → SSH and GPG keys → New SSH key に貼り付け
# 4. 接続テスト
$ ssh -T git@github.com
Hi username! You've successfully authenticated.
# 5. リモートURLをSSHに変更
$ git remote set-url origin git@github.com:username/repo.gitリモート関連コマンドまとめ
git clone URLリモートリポジトリをローカルに複製git remote -v登録されているリモートの一覧git remote add 名前 URLリモートを追加git push -u origin mainローカルの変更をリモートに送信git fetch originリモートの変更をダウンロード(マージなし)git pull origin mainfetch + merge を一度に実行