GitHubにpushする

# はじめに

- Mac OS
- Gitインストール済み。
- GitHubアカウントは登録済み。
- 管理したいプロジェクトはHelloWorldレベルで実装済み。

という状態からリモートリポジトリへPushするまでの手順を残します。


# やったこと

## 1.ローカルリポジトリを作成する

### 既存フォルダをGit管理対象に設定

```
$ cd ソースコードが入っているフォルダのパス
$ git init
$ ls -a

.			 .eslintignore		.postcssrc.js		index.html		src
..			.eslintrc.js		README.md		node_modules		static
.babelrc		.git			build			package-lock.json	test
.editorconfig		.gitignore		config			package.json
```
`.git`が存在するようになればOKです。

### commitする
ソースコードはまだpushしたくないので、空コミットを行います。

```
$ git commit --allow-empty -m "first commit"
```

```
$ git log

 Committer: 本名 <本名のMacBook-ea.local>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:

    git config --global --edit

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

```
ユーザー名とEmailアドレスを設定していませんでした。。
以下のコマンドで設定。

```
$ git config --global user.name "設定したい名前"
$ git config --global user.email 設定したいアドレス@example.com
```

## 2.GitHubと連携する

### リモートリポジトリの作成
自分のGitHubアカウントから`New`ボタンでリポジトリを作成します。
![スクリーンショット 2020-07-07 10.55.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395809/9e6f5067-8190-3470-fd1a-dd4b44f460b8.png)

![スクリーンショット 2020-07-07 10.55.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395809/09e8c2c2-8fee-76b6-480d-037d29c713e9.png)

以下の入力を行います。

- Repository name
- Description
- Public / Private　（今回はPublicにしました）
- Initialize ~~ （今回はすでにREADME.mdのファイルが存在していたのでチェックを外しました）

### リモートに反映する

![スクリーンショット 2020-07-07 11.00.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395809/650b91a8-9080-2d1a-fe69-d19352aed80d.png)

方法はいくつか提示されています。

- Quick setup
- コマンドラインでローカルリポジトリを作成
- 既存リポジトリをPushする
- 他リポジトリからソースコードを取得

今回は「既存リポジトリをPushする」を実施します。

### Pushする

```
# ローカルリポジトリにリモートリポジトリのURLを知らせる
$ git remote add origin git@github.com:{user name}/{repository name}.git

# ローカルリポジトリに紐づいているリモートリポジトリのURLを表示する
$ git remote -v
origin	git@github.com:{user name}/{repository name}.git (fetch)
origin	git@github.com:{user name}/{repository name}.git (push)
```
```
#リモートのmasterブランチにPush
$ git push -u origin master

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```
???
どうやら公開鍵・秘密鍵を生成してGitHubに登録する必要があるみたいです。

### 公開鍵・秘密鍵を生成

[公式 Connecting to GitHub with SSH](https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh)
[GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)
こちらの手順を参考にしました。

実施したコマンドをまとめると

```
# 鍵を入れるフォルダに移動
$ cd ~/.ssh

# 生成されている鍵を確認
$ ls
known_hosts

# 鍵を作成
$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/{user name}/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/{user name}/.ssh/id_rsa.
Your public key has been saved in /Users/{user name}/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:

# 鍵の中身をクリップボードにコピー
$ pbcopy < ~/.ssh/id_rsa.pub

```

GitHubの Setting > SSH and GPG keys　からコピーした鍵情報を登録します。

### （再）Pushする

```
$ git push -u origin master

Warning: Permanently added the RSA host key for IP address 'xx.xx.xx.xx' to the list of known hosts.
Enumerating objects: 2, done.
Counting objects: 100% (2/2), done.
Writing objects: 100% (2/2), 158 bytes | 158.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To github.com:{user name}/{repository name}.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
```
![スクリーンショット 2020-07-07 11.45.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395809/0537d6a9-cf93-fd2d-0a14-300cc90d1ffc.png)

成功しました！

# 助けてもらったサイト

- [Gitを触り始めてからGitHubにpushするまでの流れを誰よりも丁寧に説明する](https://qiita.com/gakisan8273/items/6ebaf9217d140ff1f031)
- [GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~](https://qiita.com/shizuma/items/2b2f873a0034839e47ce)