「リモートリポジトリって何?」「GitHubでどうやってコードを共有するの?」
初心者の方がGitHubでの共同開発を始める際、必ずつまづくのがリモートリポジトリとローカルリポジトリの連携です。
本記事では、そもそもリモートリポジトリとは何かを分かりやすく解説した上で、GitHub上に新しいリポジトリを作成し、あなたのPC(ローカル)と連携させる具体的な手順を実例でご紹介しまています。
GitHubとは何か?
GitHub(ギットハブ)は、オンラインの共同作業用のWEBプラットフォーム」です。より簡単に言うと、インターネット上のGitのデータ保管場所です。
プログラムのソースコードを保存・管理するだけでなく、複数人が共同で開発を進め、コミュニケーションを取るための機能が統合されています。
ローカル作業に特化したGitに対して、GitHubは「オンライン共有用」のツールです。
なお、GitとGitHubは別物です。違いについては下記をご参考ください。
> 【初心者向け】GitとGitHubは何が違うの?違いや使い方を解説!
リモートリポジトリとは何か?
GitHubを使った開発をしてく上で「リモートリポジトリ」という用語を頻繁に目にすることになります。
リポジトリとは何か?
そもそも「リポジトリ」は、ファイルやディレクトリの変更履歴を管理するための保管庫そのもののことを指す言葉です。
Gitにおいてプロジェクト管理しているファイル群や履歴(.gitの記録)がリポジトリにあたります。
リモートリポジトリとは何か?
リモートリポジトリとは、インターネット上のサーバーや他のネットワーク上のコンピューターに存在するリポジトリのことです
GitHubはオンライン上にあるので、そこに作成したリポジトリはリモートリポジトリとなります。
新規リモートリポジトリはGitHub上で作成する
新しいリモートリポジトリはGitを使ってコマンドラインから作成することができません。
GitHub上で直接作成する必要があります。
GitHub CLIという別のツールを使えば、ターミナルからリポジトリを作成できます。
# GitHub CLI を使用する場合
$ gh repo create [リポジトリ名] --public --cloneGitプロジェクトをGitHubと連携させる
ローカルに作成したGit管理のプロジェクトをGitHubにアップ(push)したり、ローカルとGitHubを連携させる手順を解説していきます。
※ローカルにGit管理しているプロジェクトがあることが前提となります。
Gitでプロジェクトを作成する方法については下記をご参考ください。
> 【初心者向け】Gitの使い方や開発の流れをわかりやすく実例で解説!git initからgit mergeまで(初期化、ブランチ作成,マージ,ブランチ削除)
GitHubにアカウントを作成する
まずはGitHubにアカウントを作成します。
GitHubの公式サイトにアクセスして、サインアップをクリックします。
必要情報を入力し「create account」をクリックします。

リモートリポジトリの作成
リモートリポジトリ名の指定
続いてGitHub上にリモートリポジトリを作成します。
右上の「+」アイコンをクリックし「New Repository」を選択します。


リポジトリ名をつけます。ここでは「test-remote-repository」とします。
必要に応じてDescriptionも入力します。

GitHubのメインインターフェース(操作画面)は、現時点では基本的に英語のみとなっており、プロフィール設定などから公式に表示言語を日本語に切り替える機能は提供されていません。
公開設定(Visibility)
GitHubでリポジトリを作成する際、そのリポジトリのアクセス権限を「Public」または「Private」で設定します。
基本的には「Private」を選択することが一般的です。

Public(公開)
誰でも インターネット上であなたのコードを閲覧、クローン(コピー)、フォーク(派生)できます。
オープンソースプロジェクトや、ポートフォリオとして広く公開したい個人プロジェクトに使用します。
コードの変更を提案するプルリクエストも、誰からでも受け付けることができます。
Private(非公開)
リポジトリにアクセスできるのは、あなた自身と、あなたが明示的に招待した共同作業者のみです。
企業内の機密プロジェクトや、個人的な練習用コードなど、外部に公開したくない場合に選択します。
GitHubの有料プランによっては、Privateリポジトリの共同作業者の数に制限がある場合がありますが、個人利用ではほぼ制限なく使えます。(現在はほとんどの基本機能が無料プランに含まれています)
ファイルの自動追加(Add)
「Add a README file」「Add .gitignore」「Choose a license」の項目にチェックを入れると、新しいリモートリポジトリにこれらのファイルを自動で作成してからリポジトリを初期化します。
リモートリポジトリを本流として作成していく場合は追加する設定にすることもあります。
今回のようにローカルにあるリポジトリを、リモートリポジトリと連携させる場合はすべて追加しません(※というかチェックを入れてはいけません!)

設定が完了したら「Create repository」をクリックします。
以下の画面が表示されればリモートリポジトリの作成は完了です。

リポジトリを作成すると、リポジトリのURLが表示されます。ローカルと作成したこのリモートリポジトリを紐づけるためにこのURLが必要になります。
なお、上記にはリモートリポジトリを作成したあとにやるべき最初のコードが表示されています。
「…or create a new repository on the command line」は新規のGitプロジェクトを作成するためのコードです。READE.mdファイルへの追記やgit initによる初期化から入ります。
「…or push an existing repository from the command line」は既存のリポジトリをリモートリポジトリにプッシュする方法です。
(注意点!)ファイルを自動追加(Add)してはいけない理由
今回のように、すでにローカルにコミット履歴があるリポジトリを連携させたい場合、これらのファイルを自動生成してしまうと、リポジトリ作成時の衝突(コンフリクト)が発生するリスクが高まります。
| チェック項目 | 説明 | なぜ衝突するか? |
| Add a README file | プロジェクトの概要を記述するファイルを作成します。 | ローカルの履歴の「最終コミット」と、リモートの「最初のコミット」の内容が異なり、Gitがどちらを正とするか判断できなくなります。 |
| Add .gitignore | Gitでバージョン管理しないファイル(ログファイル、ビルド成果物など)を指定するためのファイルを作成します。 | READMEと同様に、ローカルにないファイルがリモートに勝手にできるため、履歴が分岐し、初回プッシュ時やプル時に衝突が発生しやすくなります。 |
| Choose a license | プロジェクトのライセンスファイルを作成します。 | READMEと同様です。 |
(補足)リモートレポジトリのURL|HTTPS or SSH
リモートレポジトリのURLは以下の2つが用意されています。
- HTTPS(https://~)
- SSH(git@github.com:)
HTTPS
HTTPSはよく見かけるURLの形式です。

ユーザー名とパスワード(またはパーソナルアクセストークン)を使用してアクセスします。アクセスは簡単で、特別な鍵の生成をする必要がなく、Gitがインストールされていればすぐに使えます。
SSH
SSHを指定した場合は、SSH認証を使ってアクセスします。

ローカルに秘密鍵を、GitHub側に公開鍵を登録します。やや手間がかかりますが、セキュリティは非常に高いです。
一度設定が完了すれば、パスワード入力を求められることなくプッシュ/プルが実行できます。これはSSHエージェントが秘密鍵を管理し、自動で認証を行うためです。
リモートリポジトリをローカルに登録する
リモートレポジトリに別名をつけて登録する(git add remote)
次に、作成したリモートリポジトリをローカルに登録します。
Gitでは、リモートリポジトリに長いURLではなく、短い名前でアクセスできるように慣習的にエイリアス(別名)をつけます。
Git管理しているローカルのディレクトリに移動し、git remote addコマンドを使って、エイリアスとURLを指定します。
git remote add <エイリアス(別名)> <リモートレポジトリのURL>
通常、エイリアスには「origin」を使います。
git remote add origin https://github.com/YourName/your-project.gitこの段階では、ローカルにURLの別名を保存しただけで、リモートレポジトリに対して何のデータも送っていません。
origin は、プロジェクトの「主要な、または最初の送信先」を指すための慣習的な名前として広く使われています。
origin(オリジン)とは、英語で「起源」や「原点」という意味です。
(GitやGitHubで「origin」を見かけたら、リモートレポジトリのエイリアス(別名)だなと認識すればOKです)
(補足)git remote addとは?
git remoteは、Gitのリモートリポジトリに関する操作を扱うコマンド群です。
git remote add は、Gitに対する「リモート(遠隔地にあるリポジトリ)の情報を追加する」というサブコマンドです。
正しく登録されたか確認(git remote -v)
リモートレポジトリのエイリアスを登録したら、以下のコマンドで正しく登録されているか確認します。
git remote -vorigin URL (fetch)と(push)が表示されれば正しく登録されています。
履歴をプッシュする
git push
リモートレポジトリにローカルの作業履歴(データ)を送るには「push」コマンドを使います。
以下のコマンドを実行します。
git push -u origin main
Githubへのログインが求められます。

手順に沿ってログイン処理を進めます。
ログインが完了するとgit pushの処理が即座に行われます。
$ git push -u origin main
info: please complete authentication in your browser...
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 20 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 562 bytes | 562.00 KiB/s, done.
Total 6 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/prograshi/test-remote-repository.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.これで、ローカルのmainブランチのコミットを、リモートリポジトリのoriginにプッシュして同期完了です。
GitHubに行くと、ローカルと同じコミット履歴が表示されます。
-uオプション(–set-upstream)
git pushに-u (または --set-upstream)をつけると、ローカルのmainブランチとリモートのorigin/mainブランチを関連付けます。
これにより、次回以降は単に git push とするだけで良くなります。
(おまけ)git remoteでよく使うコマンド集
git remoteは、GitHub上のリモートリポジトリと連携するためのコマンド郡です。以下のようなコマンドを良く使います。
連携開始・リポジトリ情報の操作
| コマンド | 目的 | 説明 |
git clone <URL> | リポジトリの複製 | GitHub上のリモートリポジトリ全体を、ローカルにコピー(複製)します。複製時に自動的にリモート名originが設定されます。 |
git remote add <名前> <URL> | リモートの追加 | 既存のローカルリポジトリに、新しいリモートリポジトリ(GitHubなど)を関連付けます。<名前>には通常originを使います。 |
git remote -v | リモートの確認 | 現在のローカルリポジトリに登録されているリモートリポジトリの名前とURLの一覧を表示します。 |
git remote rm <名前> | リモートの削除 | 登録されているリモートリポジトリの関連付けを解除(削除)します。 |
git remote rename <旧名> <新名> | リモート名の変更 | 登録されているリモートリポジトリの名前を変更します。 |
git remote set-url <名前> <新しいURL> | リモートURLの変更 | 登録されているリモートリポジトリのURLを変更します。(例: SSHからHTTPSへ変更する時など) |
データ(変更履歴)の送受信
ローカルでのコミット(変更履歴の記録)が完了した後、リモートリポジトリとデータを同期するために以下のコマンドを使用します。
| コマンド | 目的 | 説明 |
git push <リモート名> <ブランチ名> | 変更の送信 (プッシュ) | ローカルリポジトリのコミット済みの変更を、リモートリポジトリ(GitHub)にアップロード(反映)します。 |
git pull <リモート名> <ブランチ名> | 変更の取得と統合 (プル) | リモートリポジトリの最新の変更を取得し、それを現在のローカルブランチに自動的に統合(マージ)します。 |
git fetch <リモート名> | 変更の取得 (フェッチ) | リモートリポジトリの最新の変更履歴をローカルに取得しますが、現在の作業ブランチには統合しません。リモートの状況を確認したいときなどに使います。 |
git push -u <リモート名> <ブランチ名> | 追跡設定 (初回のプッシュ) | 初めてブランチをプッシュする際によく使われます。プッシュと同時に、ローカルブランチがリモートのブランチを追跡するように設定します。次回以降は単にgit pushで済むようになります。 |
まとめ
以上でGitHub上のリモートリポジトリとローカルのリポジトリの連携は完了です。
あとは、ローカルで開発を行い、作業の合間合間にgit pushを行い、リモートリポジトリの状況を更新していきます。
複数人で作業している場合は、git pull や git fetchでリモートレポジトリの状態を取得して開発を進めたりします。


