【備忘録】GitHubの登録からローカルリポジトリのpushまで

# 概要
GitHubの登録からローカルリポジトリのpushまでを行った時の備忘録です。
ローカルの環境は、Windows10です。

# GitHubに登録する
[GitHub](https://github.com/)のページを開き、Username, Email, Passwordに登録したい内容を入力します。
![登録.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/50fc6012-f0c5-8ec3-8229-468dabc6a770.png)
「Sign up for GitHub」をクリックします。
入力検証後、「Next:Select a plan」を選択します。
![登録検証.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/f6bda81e-5aaf-85ba-e920-df46b3e28186.png)
無料プランを選択するので、「Choose Free」を選択します。
![plan.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/cc8916ce-4355-c51e-72b8-cace5a60b37d.png)
welcomeページが開くので、一番下の「skip this step」を選択します。（ここで色々設定してもOKです)
![Welcome.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/405d1747-aaf1-0b3c-f64c-f3d405850c96.png)
メールを確認するよう言われるので、、、
![メール確認.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/7eaf8c18-fe67-e03f-a268-087a01cd269c.png)
メールを受信して内容を確認し、「Verify email address」を押下します。
![メール.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/7e2fb044-e21c-fa53-2c3e-3c4bc61aaa27.png)
リポジトリ作成ページが開きます。
![リポジトリ作成1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/c589e9e2-e16e-86cb-06a8-081d0f12954a.png)
# リモートリポジトリを作成する
リポジトリ作成ページでRepository nameを入力します。
Descriptionは作成するリポジトリの説明を入力します。ここは任意です。
リポジトリの種類は「Public」のままにします。無料プランの場合は「Public」しか選択できません。
「Initialize this repository with a README」にチェックを入れると、リポジトリにREADMEファイルを自動追加してくれます。
![リポジトリ作成2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/0b8de17a-4c62-3aff-d286-323df6ea4aac.png)
「Create repository」を押下します。
リポジトリが作成できました。
![リポジトリ作成3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/ce4a7a0b-b13c-a296-f553-fbede8c00a97.png)
# Git for Windowsをインストールする
[Git for Windows](https://gitforwindows.org/)のインストーラをダウンロードします。
ダウンロードした「Git-x.xx.x.x-xx-bit.exe」を実行します。
![git1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/cb0b9d39-242b-7a6a-40b3-c4b4ff2f73fd.png)
ライセンスを一読して「Next」を押下します。
以降、基本、デフォルトのまま「Next」で進めます。お好みで変更してください。
インストール先選択ダイアログでインストール先を入力して「Next」
![git2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/6bb94e98-5419-63bc-2573-2ef49171a677.png)
インストールするコンポーネントを選択して「Next」
![git3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/375c528c-b18f-dece-b8a7-8122de49e9b6.png)
スタートメニューフォルダを入力して「Next」 
![git4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/ca659d25-39c9-f778-20e7-d96ddb01fc9b.png)
デフォルトのエディターを選択して「Next」 
コミットコメントの編集などに使用します。
![git5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/42835e0c-f01f-d482-de12-2eb665106824.png)
環境変数の設定を選択して「Next」
![git6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/6602b58b-2f9c-67d6-8fa7-aef3ce288440.png)
sslライブラリを選択して「Next」
GitではHTTPSを使ってpushやpullを行います。その時に使用するルート証明書の決定です。
![git7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/18093fa8-2006-9522-4ce6-f3a3bb6cc9e6.png)
改行コードをどうするか選択して「Next」
一番上を選択すると、チェックアウト時に改行コードをCRLFに変更し、コミット時にLFに変換します。
一番下の「Checkout as-is, commit as-is」は何もしません。特に問題なければ、こちらを選択するのが無難です。
![git8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/5b22438e-d5bd-146e-8c3d-341f5ff32fc4.png)
Gitコマンドを打つコンソールの選択です。ここはWindows標準コンソールに変更しました。
![git9.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/95547205-b196-3fd0-3d58-fd6dd683427d.png)
その他のオプションを選択して「Next」
Enable file system caching：キャッシュを使うかどうか。
Enable Git Credential Manager：HTTPSアクセスの認証情報を保存するかどうか。
Enable symbolic links：シンボリックリンクを使うかどうか。
![git10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/500ed49d-9cf1-64e9-f75e-5aa10b486e05.png)
「Finish」で完了です。
![git11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/0e995ff6-9731-43f1-7ef1-f3769251aab0.png)
# ローカルリポジトリを作成する
インストールしたGit for WindowsからGit Bashを起動します。
以下のコマンドを打ちます。#で始まる行はコメントです。

```
# ローカルリポジトリを作成するフォルダへ移動する
$ cd c:/work/github

# ローカルリポジトリを作成する
$ git init

# 以下のように表示されれば作成成功です。
# Initialized empty Git repository in C:/work/github/.git/
```
ローカルリポジトリのフォルダにテスト用のファイルを作成します。
ここでは「test.txt」とします。このファイルを追加してみます。

```
# gitのインデックスに追加する
$ git add test.txt

# フォルダごと全て追加する場合はこちら
# $ git add .

# コミットする 
$ git commit -m “pushコマンドのテスト”
```
commit時の-mオプションでコミットコメントを指定できます。
-mを付けない場合は、コメント編集用のエディタが起動します。
ファイルの新規追加時だけでなく、ファイルの編集時も、git add→git commitの流れです。

以上で、ローカルリポジトリにコミット完了です。

# リモートリポジトリにpushする
引き続き、Git Bashで以下のコマンドを打ちます。

```
# リモートリポジトリを設定する
# リモートのoriginという場所にhttps://・・・を設定します、という意味です。
$ git remote add origin https://github.com/ユーザーID/リモートリポジトリ名.git

# リモートoriginにmasterブランチをpushする
$ git push -u origin master
```
初めてpushする時は、-uオプションを付けると良いみたいです。
ローカルブランチ「master」をリモートのoriginにpushするわけですが、
-uを付けておくと「origin/master」がローカルのmasterの上流ブランチとして設定されます。
次回以降は、git pushだけで「origin/master」にpushされるようになります。

ログイン画面が表示されるので、GitHubに登録したUsername(又はEmail), Passwordを入力します。
![login.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/86be826e-bcbe-e974-4388-a32f18d39340.png)

以下のエラーが発生した場合、下記の1～3のいずれかを試して再度pushします。

```
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/ユーザーID/リモートリポジトリ名.git
'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
```
参照：[non-fast-forward エラーの扱い](https://help.github.com/ja/github/using-git/dealing-with-non-fast-forward-errors)

1.pullしてみる

```
# リモートリポジトリの変更をローカルリポジトリに反映する
$ git pull
```

2.fetch・mergeしてみる

```
# リモートリポジトリの最新情報を取得する
$ git fetch

# リモートリポジトリの最新情報をローカルリポジトリにマージする
$ git merge origin/master
```

3.fetch・rebaseしてみる

```
# リモートリポジトリの最新情報を取得する
$ git fetch

# リモートリポジトリの最新情報にローカルリポジトリを繋ぐ(ブランチを繋いでいくイメージ)
# 複数人でGitHubを使用している場合は要注意。
$ git rebase origin/master
```

push後のメッセージの最後に以下が出力されていれば成功です。

```
To https://github.com/ユーザーID/リモートリポジトリ名.git
   d0485b9..1f1073c  master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
```
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520699/acfe1478-9693-972c-f13a-fdb30ea13c65.png)

以上で、GitHubが使えるようになりました！

# 参考URL
[サルでもわかるGit入門](https://backlog.com/ja/git-tutorial/)
[Git のセットアップ](https://help.github.com/ja/github/getting-started-with-github/set-up-git)
[一般的な Git コマンドを使用する](https://help.github.com/ja/github/using-git/using-common-git-commands)