PR

ローカルのリポジトリをGithubにアップロードする方法

Rust便利帳
Sponsored

ローカル(手元のPC)にあるプロジェクトを、Githubにアップロードして更新を管理する方法について説明します。

この記事を読むことで、Gitの使い方を学び、ローカルとGithubのリポジトリを連携させる方法を理解できます。また、プロジェクトの最初からGithubを利用する場合の裏技も紹介します。

前提条件

この記事の内容を実施するにあたって、Githubを利用する準備は完了していることを想定します。具体的には、以下のような準備が必要です。

  1. Gitのインストール(gitコマンドが使用できること)
  2. Githubアカウントの作成
  3. 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リポジトリの中に新規のファイルが作られます。そこにローカルリポジトリの情報を送ると

  1. ローカルリポジトリが更新された
  2. 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になっている場合があります。エラーが出る場合はmastermainに変えてコマンドを実行してください

--set-upstreamオプションを設定しておくことで、次回の更新からはリモートリポジトリ(origin)やブランチ(master)を指定せずにgit pushgit pullを実行することができます。

C:\ushitora\github_test> git push

上記の設定が面倒な場合の裏技

git remoteなどの設定が面倒な場合には、空の状態からプロジェクトを始めるのであれば、別の方法を使うこともできます。

それは、先にGithubリポジトリを作成し、これをローカルにクローンする方法です。

C:\ushitora> git clone https://github.com/doraneko94/github_test

この方法でローカルリポジトリを作成すると、クローンしたリポジトリが自動的にoriginに登録され、pushpullmasterブランチに対して行われるように設定されます。

ちなみにこれをRustプロジェクトとする場合には、ローカルリポジトリに移動してcargo initを実行することで必要なファイルが生成されます。

C:\ushitora> cd github_test
C:\ushitora\github_test> cargo init

ただし、この方法は「手元のPCで適当に開発していたけど、やっぱりGithubで管理したくなった」という場合には使えないので、正攻法を覚えておくと良いでしょう。

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