ローカル(手元の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で管理したくなった」という場合には使えないので、正攻法を覚えておくと良いでしょう。
もっと知りたいこと、感想を教えてください!