ローカル(手元のPC)にあるプロジェクトを、Githubにアップロードして更新を管理する方法について説明します。
この記事を読むことで、Gitの使い方を学び、ローカルとGithubのリポジトリを連携させる方法を理解できます。また、プロジェクトの最初からGithubを利用する場合の裏技も紹介します。
前提条件
この記事の内容を実施するにあたって、Githubを利用する準備は完了していることを想定します。具体的には、以下のような準備が必要です。
- Gitのインストール(
gitコマンドが使用できること) - Githubアカウントの作成
- SSH Key等の設定
ローカルリポジトリの作成
git init コマンドでGit管理を始める場合
コマンドプロンプト(ターミナル、シェル)を使用して、Gitによるバージョン管理を開始したいディレクトリに移動し、git initコマンドを実行します。
C:\ushitora\github_test> git init
これにより、ローカルリポジトリが作られます。
Rustなどの言語の場合
Rustなどのモダンな言語の場合は、プロジェクトを作成すると標準でGitによる管理が行われます。
C:\ushitora> cargo new --bin github_test
C:\ushitora> cd github_test
C:\ushitora\github_test>

リポジトリの更新内容を登録
リポジトリに対して行った変更をすべて記録したいときには、以下のコマンドを実行します。
C:\ushitora\github_test> git add -A
(オプションの-Aは-allと同じ意味です。記録する変更内容を指定することもできます)
これにより、すべての更新がインデックスに登録され、コミット待ちの状態になります。コミットとは、インデックスに登録された一連の変更に名前をつけて、リポジトリに更新を反映することを指します。
コミットは以下のように実行します。
C:\ushitora\github_test> git commit -m "init"
これにより、一連の変更が"init"という名前で反映されました。
Githubリポジトリの作成
ローカルリポジトリを作成した後は、その受け手となるGithubのリポジトリを作ります。
Githubのトップページなどにある「new」という緑色のボタンを押すと、以下の画面から新規リポジトリを作ることができます。下図では、github_testという名前のリポジトリを作成しています。

ここでオススメは、完全に空のリポジトリを作成することです。具体的には、図の赤で囲った部分を
- Repository template → No template
- Add a README file → チェックを外す
の状態にしておきます。その他
- Add .gitignore
- Choose a license
もNoneのままにしておきます。
ここでいずれかを有効にすると、作成したGithubリポジトリの中に新規のファイルが作られます。そこにローカルリポジトリの情報を送ると
- ローカルリポジトリが更新された
- Githubリポジトリにも独自の更新がある
ということで更新の衝突(コンフリクト)を生じ、対応が面倒になります。
Githubリポジトリの情報をローカルに登録
受け手として作成したGithubリポジトリの情報を、「リモートリポジトリ」としてローカルリポジトリに保存します。このときリポジトリのURL情報が必要になりますが、それは作成された空のリポジトリのページから確認できます。(下図の赤の囲み。図ではSSHではなくHTTPSを選択しています)

以下のコマンド(https~の部分は自分の環境に合わせて変更してください)を実行することで、Githubリポジトリがリモートリポジトリとしてoriginという名前で登録されます。originは主となるリモートリポジトリに付けられる名前です。
C:\ushitora\github_test> git remote add origin https://github.com/doraneko94/github_test.git
Githubリポジトリに更新内容を送信
リモートリポジトリを設定すると、ローカルの更新内容をgit pushで送信したり、リモートで行われた(ローカルには反映されていない)更新内容をgit pullで引っ張ってきたりすることができます。
以下のコマンドは、ローカルでgit commitされた更新内容を、リモート(origin)のmasterブランチに送信・反映します。
C:\ushitora\github_test> git push --set-upstream origin master
(Gitでは、ブランチという機能を利用して、異なる更新履歴をパラレルワールドのように管理することができます。masterはそのデフォルト名称ですが、環境や設定によってはデフォルトがmainになっている場合があります。エラーが出る場合はmasterをmainに変えてコマンドを実行してください)
--set-upstreamオプションを設定しておくことで、次回の更新からはリモートリポジトリ(origin)やブランチ(master)を指定せずにgit pushやgit pullを実行することができます。
C:\ushitora\github_test> git push
上記の設定が面倒な場合の裏技
git remoteなどの設定が面倒な場合には、空の状態からプロジェクトを始めるのであれば、別の方法を使うこともできます。
それは、先にGithubリポジトリを作成し、これをローカルにクローンする方法です。
C:\ushitora> git clone https://github.com/doraneko94/github_test
この方法でローカルリポジトリを作成すると、クローンしたリポジトリが自動的にoriginに登録され、pushとpullもmasterブランチに対して行われるように設定されます。
ちなみにこれをRustプロジェクトとする場合には、ローカルリポジトリに移動してcargo initを実行することで必要なファイルが生成されます。
C:\ushitora> cd github_test
C:\ushitora\github_test> cargo init
ただし、この方法は「手元のPCで適当に開発していたけど、やっぱりGithubで管理したくなった」という場合には使えないので、正攻法を覚えておくと良いでしょう。

もっと知りたいこと、感想を教えてください!