とりあえず始めたい人のための、GitHub第一歩

勉強して作ったものをGitHubで公開したいなと思って、始めようとしました。
しかし、サイトによってやり方が違うし、その通りやっても上手くいかなかったり、挫折しかけました。
ようやく上手く行ったのでその記録。

#対象読者
GitHubで公開したい、導入に手間取りたくない方。
GitHubを始めようとしたけどエラーが出て進めなくなったり、サイトごとによって始め方がバラバラで導入が上手くいかず、挫折してしまった方。

#注意
解説などはなく、とりあえずgithubに公開するまでの流れです。

#事前準備
基礎知識（リポジトリとかコミットとか）
GitHubのアカウント
GitHubでリポジトリの作成
ここを[参考](https://techacademy.jp/magazine/6235)に

#Gitのインストール
##Windows
[Git for Windows](http://gitforwindows.org)をダウンロード
##Mac
Gitが最初から付属しています。
もしインストールされていなかったり、新しいバージョンのGitを利用する場合は、別途[公式サイト](https://git-scm.com)からインストールします。

#Gitコマンドの実行確認
Windows
Git Bashを開きます。
Mac
ターミナルを開きます。

開いたら、以下を入力

```
$ git --version
```

バージョンが表示されれば成功です。

```
git version 2.15.2 (Apple Git-101.1)
```

Macの方で

```
Agreeing to the Xcode/iOS license（以下略）
```
とでたら
`$ sudo git --version`を実行し、ライセンスの長い文が出てくるので `q`を入力。
その後、同意を求めてくるので`agree`を入力しましょう。


##ユーザー名とメールアドレスを設定

ユーザー名とメールアドレスを登録します。
Gitのコミットの情報に用いられるようです。
GitHubのアカウントと同じにしておくと分かり易いかもしれません。

```
$ git config --global user.name "【ユーザー名】"
$ git config --global user.email 【メールアドレス】
```

登録したら、以下のコマンドで確認して見ましょう。

```
$ git config --list
```
結果

```
user.name=【ユーザー名】
user.email=【メールアドレス】
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
```

#SSH
これをしないと、pushのたびにユーザー名とパスワードを求められるようです。

以下のコマンドで、sshフォルダに移動します。

```
$ cd ~/.ssh
```
移動したら、以下のコマンドのどちらかを実行します。

```
$ ssh-keygen -t rsa
```

↓GitHub推奨のオプションをつけたもの。

```
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
```

##鍵の場所とファイル名

上記を入力すると、鍵をどこに保存するか聞かれます。


```
Enter file in which to save the key (/Users/(name)/.ssh/id_rsa):
```
このままenterすると、`Users/(name)/.ssh/`に`id_rsa`という名前で保存されます。
もし名前を変えたいときは、

```
Enter file in which to save the key (/Users/(name)/.ssh/id_rsa):/Users/(name)/.ssh/【ファイル名】
```
のようにします。

##パスフレーズ
場所とファイル名の設定が終わると、パスフレーズなるものを求められます。

```
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
```
設定しない場合は、Enter２回押して飛ばしましょう。
**設定する場合、入力が画面に表示されないので注意**しましょう。

以下のようなのが出れば成功です。

```
Your identification has been saved in /Users/(name)/.ssh/(ファイル名).
Your public key has been saved in /Users/(name)/.ssh/(ファイル名).pub.
The key fingerprint is:
SHA256:略
The key's randomart image is:
+---[RSA     ]----+
|                 |
+----[SHA256]-----+
```

次に以下のコマンドを実行します。

```
$ vim ~/.ssh/config
```

vimに切り替わるので、以下を入力します。

```
Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/【ファイル名】
```
ファイル名には、鍵の場所とファイル名でつけたものを入れます。

入力したら`:wq`を入力してvimを終了します。

#GitHubで鍵の登録

GitHubにログインし、アカウントメニューからSettingsを開きます。

<img width="100%" alt="スクリーンショット.png" src="https://qiita-image-store.s3.amazonaws.com/0/174757/9a58cb3a-cf11-7724-0473-fa5278e1d3db.png">

開くと、左に`SSH and GPG keys`というのがあるので開きます。

<img width="100%" alt="スクリーンショット2.png" src="https://qiita-image-store.s3.amazonaws.com/0/174757/d0684a13-0066-38c6-806a-4bf1ddb924de.png">

`New SSH key`を開くと、以下のような画面になると思います。

<img width="100%" alt="スクリーンショット3.png" src="https://qiita-image-store.s3.amazonaws.com/0/174757/fbacbfc1-fbbb-6dc5-88a0-f000d45f5286.png">

`Title`を自由に入れます。

ここで一度ターミナルに戻り、以下のコマンドを実行してコピーします。

`$ pbcopy < ~/.ssh/【ファイル名】.pub` (Mac)
`$ clip < ~/.ssh/【ファイル名】.pub` (Windows)

ファイル名は、鍵の場所とファイル名でつけたものを入れます。
**.pub**のほうなので注意。

再びGitHubへ戻ります。

先ほどの、`Title`の下の`Key`の場所に`Ctrl(command) + V`でコピーしたものを貼り付けます。

`Add SSH key`を押し終わります。

#接続の確認

ターミナルに戻り、以下のコマンドを実行して接続の確認をします。

```
$ ssh github
```

以下のようなメッセージが出れば成功です。

```
Hi 〇〇! You've successfully authenticated, but GitHub does not provide shell access.
```

#既存プロジェクトをGitHubへ

デスクトップにTestというフォルダがあり、

<img width="97" alt="スクリーンショット810.png" src="https://qiita-image-store.s3.amazonaws.com/0/174757/e480d5f2-8f09-ce1f-29d7-8b3be0aadf85.png">

中身は以下のようになっており、まだ、バージョン管理を行っていないものとします。

<img width="314" alt="スクリーンショット114514.png" src="https://qiita-image-store.s3.amazonaws.com/0/174757/2eae7df4-fb40-74da-12f1-f5af0bfd2815.png">

ターミナルからcdコマンドを使って、Testフォルダに移動します。

```
$ cd ~/Desktop/Test
```

移動したら、**`git init`**コマンドを実行し、Gitリポジトリを作成します。
以下のようなメッセージが出るはずです。

```
Initialized empty Git repository in /Users/(name)/Desktop/Test/.git/

```

バージョン管理したいものを指定する**`git add`**コマンドを入力します。
今回は全部を対象に含めます。

```
$ git add --all
```

ファイルやディレクトリの追加や変更をリポジトリに記録するため、コミットをします。

```
$ git commit -m "コメント"
```
コミットが終わると以下のようなメッセージが出ます。

```
[master (root-commit)  ]
 4 files changed, 610 insertions(+)
 create mode 100644 css/normalize.css
 create mode 100644 css/style.css
 create mode 100644 image/header.jpg
 create mode 100644 index.html
```

##リモートリポジトリへ反映

GitHubのどのリポジトリに反映させるかの情報を追加します。
事前に作っておいた、リポジトリの真ん中に以下のようなメッセージがあります。

>**…or push an existing repository from the command line**
>git remote add origin git@github.com:〇〇/test.git
git push -u origin master

下2行をコピーして、ターミナルに貼り付けて実行します。

```
$ git remote add origin git@github.com:〇〇/test.git
$ git push -u origin master
```

完了するまで待ちます。
完了すると以下のようなメッセージが出ます。

```
Counting objects: 8, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (8/8), 570.28 KiB | 6.55 MiB/s, done.
Total 8 (delta 0), reused 0 (delta 0)
.
.
.
```

GitHubを確認して、追加されて入れば終了です。

<img width="100%" alt="thanks for reading.png" src="https://qiita-image-store.s3.amazonaws.com/0/174757/3d244048-3a6f-4442-f402-828ec91d8a59.png">


#参考にさせていただいたサイト
[今日からはじめるGitHub](https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000)
[今さら聞けない！GitHubの使い方](https://techacademy.jp/magazine/6235)
[gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)