最速で GitHub を使えるようになる

2020-05-09 作成:Windows10 professional

最速で GitHub を使えるようになるための習得方法。
GitHub とは何か、何のために使うのか、についてはネット上に多くの記事があるので省略。

# GitHub 側の登録、設定

## GitHub に登録

https://github.co.jp/

GitHub サイトへの登録の方法も省略する。登録は正常に終わっているものとし、登録の詳細情報は以下のものだとして説明を進める。

ユーザー名 : sakura
電子メール : aaa@bbb.com

# GitHub サイト内の保存場所を作成

GitHub サイト内の保存場所を「リモートリポジトリ」と呼ぶ。GitHub にサインインすると、レポジトリを作成するボタンがあるので、それを押すと作成画面に遷移する。

作成するときの設定は以下のとおり
- Repository name は保存場所の名前で、ここでは sumire と名付けたとする
- Description には、この保存場所の説明を書くことができる
- private を選択すると非公開になる
- Initialize this repository with a README にチェックを付けると README ができる

「Create repository」ボタンを押すと sakura/sumire という名前のリモートレポジトリが作成される


# PC 側の設定

## 自分の PC に保存場所を作成

自分の PC 内の保存場所を「ローカルレポジトリ」と呼ぶ。c:\github というフォルダを作成し、その中を使うことにしたとして説明を進める。
c:\github 内で `git init` とすると、 c:\github が保存場所であるという設定がなされる。

```
git init
```

# PC 側の環境設定


PC に GitHub サイトの情報を設定する。GitHub サイトのユーザー名、登録に使った電子メールアドレス、さきほど作成したリモートレポジトリ、を設定する。

```
git config --global user.email aaa@bbb.com
git config --global user.name sakura
git remote add origin git@github.com:sakura/sumire.git
```

# 転送する


## リモートからローカルへ転送

先ほど作成したリモートリポジトリには README があったが、それを自分の PC に転送（プル）してみる。master というのは何か、は後述する。

```
git pull origin master
```

## ローカルからリモートへ転送

PC 側でファイルを追加、追記編集してから、GitHub に転送（プッシュ）する。

### PC でファイルを追加、コミット

c:/github に何か一つファイルを追加したとする。ここでは test.html というファイルを追加したとする。

追加したファイルを管理の対象に登録（インデックスに追加）し、この時点でのローカルリポジトリの状態を記録（コミット）する。

```
git add test.html
git commit -m "新しいファイル test.html を追加"
```

### リモートリポジトリにプッシュ

この時点でのリモートリポジトリの状態を GitHub サイトに転送（プッシュ）して同期する。

```
git push origin master
```

小さい作業の単位でコミットを行い、ある程度作業がひと段落した時点でプッシュするのが、たぶん普通の使い方。

# バージョンの枝分かれ

現在のソースファイルの状態は、それはそれで取っておき、そこから枝分かれして続きを書いたりデバッグしたりするときは、現在までの流れ（ブランチ）から新しいブランチを作る。

## 現在のブランチの確認

`git branch` とやると、現在のブランチの名前が表示される。アスタリスクがついているのが現在のブランチ。master という名前がついている。

```
git branch

* master
```

## 新しいブランチの作成

デバッグのための debug1 ブランチを作成する。作成しただけでは、まだ現在のブランチは変わらない。

```
git branch debug1
git branch

  debug1
* master
```

`git checkout` で現在のブランチを変更できる。`git branch` してみればアスタリスクの付くブランチが変わっていることが分かる。


```
git checkout debug1
git branch

* debug1
  master
```

## 新しいブランチのプッシュ

ローカルレポジトリの test.html を書き換えたとする。変更したファイルをインデックスに知らせ、コミットしてから、GitHub サイトにプッシュする。`git push origin debug1` とやって、master ブランチではなく debug1 ブランチをプッシュしている。

```
git add test.html
git commit -m "test.html を修正"
git push origin debug1
```

## 新しい変更を取り込む（マージ）

debug1 で修正した結果を master に入れ込んでみる。

現在の作業ブランチを master に変更する。次に debug1 の修正結果を現在のブランチに取り込む（マージ）。最後にリモートレポジトリに反映させている。

```
git checkout master
git merge debug1
git push origin master
```




# その他

## GUI で使う

GitHub の標準ソフトは GitHub Desktop なので解説も多く、最初はこれでいいのではないか。

https://desktop.github.com/

## 転送を http ではなく https にする

GitHub のリポジトリのサイトで clone or download ボタンを押すと http か SSH かを選択できる。SSH を使用するためには PC 側で鍵を作成して GitHub サイトに登録する必要がある。

```
ssh-keygen -t rsa
```
生成された鍵は、`C:\Users\username\.ssh` に保存されている。公開鍵ファイル `id_rsa.pub` は GitHub サイトに登録する。GitHub のリポジトリ表示ページで settings から SSH and GPG key に入り、id_rsa.pub ファイルの中身をコピペして保存する。


## レポジトリの消し方

レポジトリのサイトから settings を選ぶ。その中には delete repository のボタンがある。

## 複数ファイルを一括して add

いちいち個別ファイル名を指定しなくても、以下のコマンドでカレントディレクトリ以下の全ファイルが add できる。

```
git add .
```

他にも下の例のように、ワイルドカードでの指定やサブディレクトリ全体の指定などが行える。

```
git add *.py
git add directoryname
```

## ブランチの削除

-d だとマージ済みのブランチが削除できる
-D だとマージが済んでいなくても削除できる

```
git branch -d branchname
git branch -D branchname
```

## マージの取り消し

マージに失敗（コンフリクト）したときは、慌てずいちど頭をせいりしたほうがよいので、まずは元に戻す。

```
git merge --abort
```

## 除外したいファイルの指定

あまりに大きなファイルは GitHub では預かってくれない、など管理から除外したいファイルがあるときは、`.gitignore` という名前のファイルで指定する。細かい解説は他のサイトに譲る。




おしまい