【Git はじめの一歩】コードをリモートリポジトリで共有したいとき

## 背景

プログラミング初学者の学習にはいくつものエラーが立ちはだかり、それらは乗り越えたときの小さな喜びを私たちに与えてくれます。（←だれ？）

わたくしはそんな偉そうなことを言える立場ではないし、経験値もゲキ浅だが、
今回は、私よりも少しだけ後ろを走っておられる初学者の方々がエラーにぶち当たり、誰かに質問するとき、
『このコードを共有したい。でもGitHub にアップする方法わからんな。』
という小さな、そして地味な壁にぶち当たったことを想定して、『こうやったらエエねん。』を簡単にメモる。


話は逸れるが、初学者からのエラーに関する質問に答えてあげたいと思った（と仮定した）とき、私のレベル感だと「GitHub でコード共有してもらえませんか？」と言いたくなる予感がした。

知識や経験が豊富な諸先輩方の場合、ある程度の情報から目星をつけて回答することが出来ると思うが、私の場合はエラーが出てるコードを見て、何なら再現させてみた方が早いのではないかと。。

そのうち必要になる気がしたので、自分の言葉で整理してみた。

超絶初心者向けなので「はじめの一歩」ということで。



## では早速！

### 0.前提事項

- GitHub のアカウント登録は完了しているものとする
- Git のインストールは完了しているものとする
- 作業中のディレクトリは`sample-repository` と仮定する
- 作業中のディレクトリは、まだGit管理していないものと仮定する

### 1.「git init」：バージョン管理を始める

作業中のディレクトリ内で初期化することにより、Git によるバージョン管理対象とする。

```
# sample-repository ディレクトリに移動
$ cd sample-repository
# 初期化する
$ git init
Initialized empty Git repository in /Users/<username>/Desktop/sample-repository/.git/
```

上記コマンド実行結果より、`.git ` フォルダが作成されていることがわかる。

※ドット始まりのファイルやフォルダは隠しフォルダのためFinderでは非表示になっている可能性あり。
ショートカットキー`[command] + [shift] + [.(ドット)]` にて表示モードに切り替えが可能。コマンドから確認する方法は以下の通り。

```
# 現在のディレクトリ直下にあるファイルやフォルダのリストを表示する
$ ls -al
```

### 2.「git add」：インデックスに追加する

`add`コマンドを使って、ファイルをインデックスに追加する。

```
# 現在の状況を確認するためのコマンド
$ git status
# インデックスに追加されていないファイルは「Untracked files:」として表示されるはず。（赤色）

# インデックスに追加するためのコマンド
$ git add .

# この後、改めて"git status"を実行すると「Changes to be committed:」として表示されるはず。（緑色）
```

※上記説明では`git add .` のようにオプションとしてドットを指定したが、これはディレクトリ配下のファイルをまとめてadd するという意味になる。ドットの代わりァイル名を指定することにより、ファイル単位でadd することも可能。

### 3.「git commit」：コミットする

インデックスに追加されたファイルをコミットする。

```
# コメントをつけてコミットする
$ git commit -m "ここにコメントを記入"
```



### 4.GitHub 上でリポジトリの作成

GitHub にログインし、画面右上の「＋」ボタンから「New repository」を選択する。

<img width="270" alt="スクリーンショット 2020-01-03 8.15.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296186/cc15d26a-137b-cc55-4153-de781b47b099.png">


次の画面で、「Repository name」欄に”sample-repository（作業中のアプリ名）” を入力し、「Create repository」ボタンをクリックするとリポジトリが作成される。

<img width="762" alt="スクリーンショット_2020-01-03_8_17_42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296186/2df2f87c-acb9-d01d-6f28-a07cb5d1dd6c.png">

次の画面で、「Quick setup」に表示されているリモートリポジトリのURL（HTTPS）をコピーする。

<img width="1028" alt="スクリーンショット_2020-01-03_8_20_44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/296186/db1557ac-34f9-ada8-4286-087c0b96069f.png">



### 5.「git remote」：リモートリポジトリに紐付け

先ほど取得したURLを使って、ローカルリポジトリをGitHub のリモートリポジトリと紐付けを行う。

ここでは、ローカルリポジトリを`origin`としてリモートリポジトリ（URL）に紐付ける（プッシュ先を設定する）。

```
# リモートリポジトリとの紐付けを行う
$ git remote add origin 先ほど取得したURL

# リモートリポジトリとの紐付け状況を確認する
# orignという名前と、それに対応するURL（書き込み用と読み取り用）が表示される
$ git remote -v
origin	https://github.com/<userid>/sample-repository.git (fetch)
origin	https://github.com/<userid>/sample-repository.git (push)
```



### 6.「git push」：プッシュする

リモートリポジトリとの紐付けが出来ているので、masterブランチに対してプッシュする。

```
$ git push origin master
```



### 7.GitHub のリポジトリURLを質問時に提示する

GitHub 画面に戻り、先ほど作成したリポジトリのURLを質問時に利用する、ことがデキるはず。

---
## 余談 （質問するときの心がけ）

以下のような情報を端的に、そしてわかりやすく伝えることを心がけてみては如何でしょうか。
案外、これらを整理していくうちに自己解決できたりすることもあるのでご参考まで。

- 目的：何をやろうとしていているのか（アプリの概要、作業の概要）
- 状況：どんなエラーが出ているのか
- 経緯：どこまで自分で調べたり、トライしてみたのか
- 仮説：わからないなりの目星、 とかがあれば提示する