<CodeLearn/>
Git レッスン3

リモートリポジトリ

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 origin

git 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 - リモートから取得

リモートリポジトリの最新の変更をローカルに取り込みます。fetchpull には重要な違いがあります。

git fetch

リモートの変更をダウンロードするが、ローカルのブランチにはマージしない。 安全に差分を確認できる。

$ git fetch origin
$ git log origin/main
# 確認してからマージ
$ git merge origin/main

git 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.git

Fork(フォーク)

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 を一度に実行