【初心者向け】GithubとローカルPCとの連携

GithubとローカルPCを連携させる手順について記載します。

https://github.com/


##どんな人向け？
* Githubのアカウントは持っていて、リポジトリは作成することができる。
* Gitでできることについて、なんとなくは知っている。
* GithubとローカルPCを連携させるとき、いつも手順を忘れてしまい、毎回ググってしまう。


##やり方は大きく２つ

やり方は大きく２つです。
（※他にも色々あるかもしれませんが...この２つさえ覚えておけば問題無し）

**1.`git clone`を使う**
**2.`git remote add`を使う**

####前提条件

上記の通りGitコマンドを使うのでローカルにGitがインストールされている必要があります。
次のコマンドでバージョン情報が返ってくるか確認

~~~bash
git --version
git version 2.30.1
~~~

####インストール

もしインストールされていない場合は、まずGitをローカルにインストールします。
Macの場合はHomebrewを使えは簡単にインストールできます。

~~~bash
brew ls    #Homebrewを使ってインストールされたパッケージの確認
brew install git
~~~

または、公式サイトからインストーラをダウンロードしても構いません

https://git-scm.com/downloads

最終的にコマンドラインで`git --version`の結果が返ってくることを確認してください。


##git cloneを使った連携

リモートリポジトリをローカルにコピー（＝クローン）します。
リモート側で既に複数回コミットされていてソースコードが存在しているときは、主にこちらを利用します。
Githubのリモートリポジトリとすぐ連携できるのでこの方法が1番簡単です。

####GithubでリモートリポジトリのURLをコピー

Githubで対象となるリモートリポジトリを開き、画面右上の緑色のボタンCodeをクリックします。
Cloneというプルダウンが開いて、URLが表示されていると思います。そちらの内容をコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/194056/2e0b5b05-f033-7792-7c17-f5a13104f72b.png)

####git cloneコマンドの実行

ローカルで`git clone`コマンドを実行します。
クローンしたいディレクトリに移動して、下記のコマンドを実行します。
**※リポジトリ名のディレクトリから作成されるのでローカル側で作っておく必要はありません。**

実行後、クローンしたリポジトリ名のディレクトリが作成されていることを確認します。

~~~bash
cd /Users/***/git  #リポジトリ名のディレクトリが自動作成される
git clone [URL]    #[URL]は先程の手順でコピーしたGithubのURL
~~~

これで連携は完了です。

####GithubでリモートリポジトリのURLをコピー

Githubでリモートリポジトリを作った後、画面右上の緑色のボタンCodeをクリックします。
Cloneというプルダウンが開いて、URLが表示されていると思います。そちらの内容をコピーします。


##git remote addを使った連携

ローカルのディレクトリ（リポジトリ）と、Githubにあるリモートのリポジトリを連携させるイメージです。
新規でGithub上でリモートリポジトリを作成し最初のローカルと連携させる際は、主にこちらを利用します。

####Githubでリモートリポジトリを作成

Githubで新規リモートリポジトリを作った後、このような画面が表示されます。
基本的にこの流れに沿う形でやれば問題なくローカル連携が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/194056/1403324a-9b70-4aa2-fc23-e41727d6b738.png)

####リモートリポジトリのURLをコピー

上記画像の「Quick setup - ...」と記載されている箇所にあるリモートリポジトリーのURLをコピーします。

####ローカル側でのセットアップ手順について

まず、上記画像でGithubが出してくれている手順について解説します。
下記の２つの箇所だけ覚えておけば良いです。

`...or create a new repository on the command line`
**こちらは、新しくローカル側でリポジトリを作成して連携する方法の手順です。**

`...or push an existing repository from the command line`
**こちらは既にローカルリポジトリがある場合、それと連携する方法の手順です。**

基本的に`git init`コマンドがあるかないかの違いになります。

####新規のローカルリポジトリを作成する場合

以下の手順でローカルリポジトリを作成します。
※Github記載の手順そのままですが。。。

~~~bash
mkdir [repository-name]          # ローカルリポジトリのディレクトリ作成
cd [repository-name]
git init                         # ローカルリポジトリの作成（初期化）
git add README.md                # ローカルリポジトリにREADME.mdファイルの作成
git commit -m "first commit"     # README.mdファイルを作成した時点でコミット
git branch -M main               # ローカルに新規ブランチを作成
git remote add origin [URL]      # ローカルリポジトリとリモートリポジトリの連携
git push -u origin main          # ローカルコミットされた内容をリモートにpush
~~~

この一連の手順で、リモートに`README.md`ファイルが連携された状態となります。
あとは、ローカルで開発を進めて、必要なタイミングで作成したソースコードを`commit`および`push`すればリモートリポジトリに連携可能です。

####既存のローカルリポジトリが存在する場合

既にローカルリポジトリを作成していて、コードも記載されている場合は、最初の`git init`あたりのコマンドは省略してリモートリポジトリとの連携をすれば良いです。
※これもGithub記載の手順そのままですが。。。

~~~bash
cd [repository-name]         # 既にあるローカルリポジトリに移動
git remote add origin [URL]  # ローカルリポジトリと、リモートリポジトリとの連携
git branch -M main           # ローカルに新規ブランチの作成
git push -u origin main      # ローカルコミットされている内容をリモートにpush
~~~

リモートリポジトリとの連携状況は次のコマンドで確認します。

~~~bash
git remote -v
origin https://guthub.com/.../.../hogehoge.git (fetch)
origin https://guthub.com/.../.../hogehoge.git (push)
~~~

リモートリポジトリの削除は次のコマンドを使います。

~~~bash
git remote rm origin
~~~

ちなみに、ローカルリポジトリ一つに対して、リモートリポジトリの連携は複数個あっても問題ありません。


####git remote add時の注意事項

Github側で、初期のリポジトリを作成する際に`README.md`や`LICENSE`の自動作成をしますか？と聞かれます。
リモートでこれらのファイルを作成してしまった場合は、前述のクローンで連携する方法を取った方が良いです。
ローカルに既にコミットがあると、コミット履歴が異なるものとなってしまい、うまく`push`ができなくなります。

##最後に

GithubはOSS活動をしていく上で最低限知っておくべきスキルになるかと思います。
基本的な使い方については今後も色々投稿していきますので、ぜひ参考にしていただければと思います。