いまさらGit for Windowsのインストール、GitHubに接続してみた。

#はじめに
「[いまさらだけどGitを基本から分かりやすくまとめてみた](https://qiita.com/gold-kou/items/7f6a3b46e2781b0dd4a0)」を見て、Gitを一から始めたくなったので、Windows10でGitForWindowsのインストールして、GitHubに接続してみました。
その際の手順です。

#ダウンロード
下記のサイトからダウンロード出来ます。
https://gitforwindows.org/

「Download」ボタンを押下して、インストーラーをダウンロードします。
現在は、「Git-2.18.0-64-bit.exe」でした。
![git.png](https://qiita-image-store.s3.amazonaws.com/0/259433/c3cbf209-1e0f-d0aa-22c0-aaa28161e1ec.png)

#インストール
ダウンロードしたファイルを実行しGit for Windowsをインストールします。
ファイルを実行すると、「このアプリがデバイスに変更を加えることを許可しますか？」画面が表示されますので、「はい」を押下します。

##ライセンス
同意する場合「Next」ボタンを押下します。
![2018-08-30_100920.png](https://qiita-image-store.s3.amazonaws.com/0/259433/017c22ad-c564-41e3-619c-3c2523e064c0.png)

##インストールフォルダの選択
変更しなくても問題ないと思いますので、「Next」ボタンを押下します。
![2018-08-30_102902.png](https://qiita-image-store.s3.amazonaws.com/0/259433/51661f93-c9ec-05ab-ff86-5fec3fec98af.png)


##インストールするコンポートネットを選択
変更しなくても問題ないと思いますので、「Next」ボタン押下します。

- Additioncal icons:ディスクトップにアイコンを追加する。
- Windows Explorer integration:エクスプローラーで右クリック時に表示されるメニュー追加する。　 
- GitLFS:GitLFSのサポート有無。
- Associate .git* configuration files with the default text editor:.gitで始まるファイルをデフォルトのテキストエディタに関連付ける。
- Associate .sh files to be run with Bash:*.shファイルをBashで実行するように関連付ける。
- Use a TrueType font in all console windows:全てのコンソールウインドウにTrueTypeフォントを使用する。（つけないほうが良さそう。）
- Check daily for Git Windows updates:毎日Git for Windowsのアップデートがあるか確認します。
![2018-08-30_101102.png](https://qiita-image-store.s3.amazonaws.com/0/259433/387e1dce-26d2-f235-5bc4-783dc921d84a.png)

##スタートボタンメニューにGitの追加
変更しなくても問題ないと思いますので、「Next」ボタン押下します
![2018-08-30_104436.png](https://qiita-image-store.s3.amazonaws.com/0/259433/e36a2ed2-4695-0a60-14dd-a34f4b9acfd0.png)

##デフォルトのエディタを設定(コミットコメントなどで使用します。)
デフォルトで「Use Vim」が選択されています、変更しなくても問題ないと思いますので、「Next」ボタンを押下します。
設定ファイルで後から変更することも可能です。

- Use the Nano editor by default:Nanoエディタをデフォルで使用する。
- Use Vim(the ubiquitous text editor) as Git’s default editor:Vimをデフォルで使用する。
- Use Notepad++ as Git’s default editor:Notepad++をデフォルで使用する。(Notepad++がインストール済みである必要があります。入ってない場合「Next」ボタンが有効になりません。)
- Use Visual Studio Code as Git’s default editor:Visual Studio Codeのエディタを使用する。(Visual Studio Codeがインストール済みである必要があります。入ってない場合「Next」ボタンが有効になりません。※インストールして有効にならなかったので何らかの設定が必要そう)
- Use Visual Studio Code Insiders as Git’s default editor:Visual Studio Codeのエディタを使用する。(Visual Studio Codeがインストール済みである必要があります。入ってない場合「Next」ボタンが有効になりません。※インストールして有効にならなかったので何らかの設定が必要そう)

![2018-08-30_104859.png](https://qiita-image-store.s3.amazonaws.com/0/259433/239d4dca-ea9f-81af-8fa4-80d3ccd491c7.png)

## Windowsの環境変数PATHへ追加する内容を設定
デフォルトで「Use Git from the Windows Command Prompt」が選択されています。この設定でも問題ないと思いますが、環境変数を汚したくない場合は、「Use Git from Git Bash only」は選択し、「Next」ボタンを押下します。

- Use Git from Git Bash only:環境変数PATHを修正しない。GitBashでのみGitコマンドが使える。
- Use Git from the Windows Command Prompt:GitBash に加えて、コマンドプロンプトからもGitコマンドが使えるようになります。
- Use Git and optional Unix tools from the Windows Command Prompt:GitコマンドとUnixコマンドをコマンドプロンプトに追加します。選択した場合、既存のコマンドが上書きされて、Unixコマンドの振る舞いをしますので、注意して下さい。

![2018-08-30_105703.png](https://qiita-image-store.s3.amazonaws.com/0/259433/88408515-7b5c-580b-3d4d-2ba79783f9b7.png)


##接続方式を設定
今回はGitHubに接続するので、「Use the OpenSSL library」を選択し、「Next」ボタンを押下します。

- Use the OpenSSL library:OpenSSLライブラリを使用してサーバー認証を行います。
- Use the native Windows Secure Channel library:Windows Certificate Storesを使用して、サーバー認証を行う。

![2018-08-30_110055.png](https://qiita-image-store.s3.amazonaws.com/0/259433/39ef97a5-b3a7-bdbd-69ef-55667b45273f.png)

## テキストファイルの改行のスタイルを設定
Unix環境とWindows環境が混在してるなら「Checkout Windows-style,commit Unix-style line endings」を、Windows環境のみなら「Checkout as-is, commit as-is」を選択し、「Next」ボタンを押下します。
迷ったら「Checkout as-is, commit as-is」で良いかと思います。

- Checkout Windows-style,commit Unix-style line endings:チェックアウト時に改行コードをLFからCRLFにします。コミット時にCRLFをLFに変換します。クロスプラットームプロジェクト時にWindows側の場合は選択します。
- Checkout as-is, commit Unix-style line endings:チェックアウト時は何もしない、コミット時にCRLFをLFに変換します。クロスプラットフォームプロジェクト時に、unix側の場合は選択します。
- Checkout as-is, commit as-is:チェックアウト、コミット時に変換を行わない。クロスプラットフォームプロジェクト以外の場合は選択します。

![2018-08-30_110308.png](https://qiita-image-store.s3.amazonaws.com/0/259433/fc83eefe-2ce8-857f-f638-cc83f786be3c.png)

## Git Bashが使用するターミナルエミュレータを設定
デフォルトで「Use MinTTY」が選択されています、変更しなくても問題ないと思いますので、「Next」ボタンを押下します。

- Use MinTTY(the default terminal of MSYS2):MinTTYを使用します。サイズが変更できるウィンドウ、非矩形選択、Unicodeフォントを使用、Windows コンソールプログラム(interactive Pythonなど)は、winpty経由して、MinTTYを使用することになります。
- Use Windows' default console windows:windows標準のコマンドプロンプトを使用します。 interactive Pythonやnode.jsなどのWin32コンソールプログラムの場合は選択します。スクロール機能が制限されており、非ASCII文字を正しく表示するために、Unicodeフォントを設定する必要があります。Windows 10以前はウィンドウのサイズを自由に変更することができず、矩形のテキスト選択しかできませんでした。
![2018-08-30_133828.png](https://qiita-image-store.s3.amazonaws.com/0/259433/25838307-1981-ad27-af3d-129e6171da62.png)

## その他のオプション
デフォルトで「Enable file system caching」、「Enable Git Credential Manager」が選択されています、変更しなくても問題ないと思いますので「Install」ボタンを押下します。

- Enable file system caching:fscacheキャッシュの有効化。メモリにキャッシュすることで性能向上させる。
- Enable Git Credential Manager:Windowsの用のGit Credential Managerは、Windowsに対して安全な認証証明の付きのストレージを提供する。特にVisual Studio Team ServiceやGitHub用のさまざまな認証サポートをする。（.NET framework v4.5.1以降が必要）
- Enable sysmbolic links:シンボリックリンクを有効にする。（SeCreateSymbolicLink 許可が必要）既存のリポジトリは、この設定に影響されないことに注意してください。

![2018-08-30_134303.png](https://qiita-image-store.s3.amazonaws.com/0/259433/68862669-e064-b067-9d76-a333a9a86ee0.png)

##インストール中
インストールが始まります。
![インストール.png](https://qiita-image-store.s3.amazonaws.com/0/259433/4876d9bc-051d-5c9b-7c51-c323e29ebe5f.png)

##インストール後
インストールが完了すると、完了画面が表示されますので、「Finsh」ボタンを押下してインストールを完了させます。

- Lauch Git Bash:Git Bashが起動します。
- View Release Notes:Release Notesページが表示されます。

![インストール後.png](https://qiita-image-store.s3.amazonaws.com/0/259433/2dce18f7-502d-1b97-516b-c7d35c6af3b4.png)

#インストール後の設定
Git for Windows後にGit for Windowsの設定を行います。

##環境設定
GitBashを起動した際に、デフォルトのホームディレクトリは、/c/Users/[ログインユーザ]になっています。この場所でも問題ないのですが、他のファイルが混在してるので、別に場所に変更した方が作業しやすいと思います。
システムのプロパティ画面を開くには、Windowsキー+Rで、ファイル名を指定して実行ダイアログが表示されるので、下記を入力し「OK」ボタンを押下します。
`sysdm.cpl`
![ファイル名を実行して.png](https://qiita-image-store.s3.amazonaws.com/0/259433/d0a04799-db28-3e33-8f08-74effa1ab478.png)

システムのプロパティ画面が開きますので、「詳細設定」タブを選択します。
![システムのプロパティpng.png](https://qiita-image-store.s3.amazonaws.com/0/259433/9b9ffadd-8b74-706a-a825-f98f2a41401d.png)

「詳細設定」タブ内の「環境設定」ボタンを押下します。
![詳細設定.png](https://qiita-image-store.s3.amazonaws.com/0/259433/436585f1-0707-c1d4-6075-cc6d671f15fe.png)

環境変数ダイアログが表示されますので、[ログインユーザ名]のユーザ環境変数の下にある「新規」ボタンを押下します。
![s.png](https://qiita-image-store.s3.amazonaws.com/0/259433/fff136d1-e52e-7647-a719-1e3a933e7674.png)

新しいユーザ変数入力ダイアログが表示されますので、下記を入力して下さい。

- 変数名:HOME
- 変数値:ホームディレクトリに設定するパス(今回はC:\homeに設定してます。)

入力後「OK」ボタンを押下します。
![新しいユーザ変数.png](https://qiita-image-store.s3.amazonaws.com/0/259433/cb39aab1-4a05-cd39-fb5f-cc5a05cb50a8.png)

環境変数ダイアログに戻り、追加した変数が設定されていることを確認して、「OK」ボタンを押下します。システムのプロパティ画面に戻りますので、こちらも「OK」ボタンで画面を閉じます。
![環境変数2.png](https://qiita-image-store.s3.amazonaws.com/0/259433/c8c71f65-6ffc-d4f6-d2f4-22e09dd2b4c9.png)

GitBashをスタートメニューから選択し起動します。
下記のコマンドを入力して、先程の変数値に入力したパスが設定されていれば、大丈夫です。

``` 
$ pwd
/c/home
``` 

##公開鍵の生成
GitHubへ接続するために公開鍵を作成します。
GitBashをスタートメニューから選択し起動します。
下記のコマンドを実行します。

```bash:GitBash
$ ssh-keygen -t rsa -b 4096 -C [コメント]
```
実行すると、作成する公開鍵と秘密鍵のディレクトリおよびファイル名の確認されます。
ディレクトリとファイル名がそのままでよければそのままEnterを押してください。

```bash:GitBash
$ ssh-keygen -t rsa -b 4096 -C [コメント]
Generating public/private rsa key pair.
Enter file in which to save the key (/c/home/.ssh/id_rsa):
```

パスフレーズを設定します。設定しなくてもEnter進めますが、設定しておいたほうが良いでしょう。

```bash:GitBash
Created directory '/c/home/.ssh'.
Enter passphrase (empty for no passphrase):
```
確認の為にもう一度入力を求められるので、同じパスフレーズを入力します。


```bash:GitBash
Enter same passphrase again:
Your identification has been saved in /c/home/.ssh/id_rsa.
Your public key has been saved in /c/home/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:A/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx [コメント]
The key's randomart image is:
+---[RSA 4096]----+
|=o*..  o..o.     |
|.+o=     +.      |
|  o.  o.+. .     |
| .o  o o. = .    |
|      ..S. + .   |
| o   o..o.  .    |
|  o    o .       |
|. +.o o .        |
|.o+*.+           |
+----[SHA256]-----+
```

パスフレーズを入力すると、公開鍵と秘密鍵が作成されます。
何も変更しなかった場合は、コマンドを実行した直下に.sshディレクトリが作成され、下記の2ファイルが作成されます。

- id_rsa : 秘密鍵
- id_rsa.pub : 公開鍵

#GitHub
GitHubに接続します。
https://github.com/

すでにアカウントを持っている場合は、公開鍵の登録へ進んで下さい。
![GIthub.png](https://qiita-image-store.s3.amazonaws.com/0/259433/df943e3c-e203-0c75-c480-31c4f23eff66.png)

##アカウント登録
アカウント登録は、画面の右上にある「Sign up」を選択します。
「Join GitHub」画面が表示されます。

###Step1
3つの項目を入力したら、「Create an account」ボタンを押下します。

- Username:ユーザー名を入力します。
- Email address:Emailアドレスを入力します。
- Password:パスワードを入力します。

![GitHubsignup.png](https://qiita-image-store.s3.amazonaws.com/0/259433/2cd9c02a-639d-4abd-690c-5df80e506655.png)



###Step 2
個人で使用する分には、このまま設定で問題ないと思いますで、「Continue」ボタンを押下します。

- Choose your personal plan:料金プランです。
    - Unlimited public repositories for free. :リポジトリは無料で作成出来ますが、全て公開された状態になります。
    - Unlimited private repositories for $7/month. :非公開のリポジトリは作成出来ます、月に7ドル。
- Help me set up an organization next:企業向けの設定になります。サポートが手厚くなるようです。
-  Send me updates on GitHub news, offers, and events:GitHubからのニュースやイベントのメールが届くようになります。

![GitHubsignup2.png](https://qiita-image-store.s3.amazonaws.com/0/259433/9c2e4d70-8daa-f2df-93fb-762a2a79576d.png)

###Step 3
簡単なアンケートページです。無視しても問題ありません。「Submit」ボタンを押下します。

- プログラミング経験のレベルは？
    - 経験豊富
    - やや経験あり
    - 初心者
- GitHubをどのように使う予定ですか？ （当てはまるもの全てチェック）
    - 開発
    - 学校のプロジェクト
    - プロジェクト管理
    - 研究
    - 設計
    - その他
- あなたはどのような存在ですか？
    - 愛好家
    - 学生
    - プロフェッショナル
    - その他
- 何に興味があるか？

![STEP3.png](https://qiita-image-store.s3.amazonaws.com/0/259433/ee7a15ab-573a-0133-32a6-2774330a3991.png)

###アカウント登録完了
アカウントの登録が完了しました。
途中で、GitHubから次のタイトルのメールが来ると思いますので、「[GitHub] Please verify your email address.」本文の「Verify email address」をクリックして、メールアドレスが正しい事を確認します。確認が完了すると「[GitHub] Thanks for verifying your email address.」とメールが届きます。

- Read the guide:https://guides.github.com/activities/hello-world/
    - ガイドです。リポジトリの作成から始まり、ブランチの作成、変更してコミット等...
- Start a Project:https://github.com/new
    - 新しいリポジトリを作成します。後ほど実施します。

![GitHubsignup3.png](https://qiita-image-store.s3.amazonaws.com/0/259433/93a90cda-d4c8-bdb6-58af-5eab7f47fbdc.png)

##公開鍵の登録
先程作成した公開鍵を登録します。

画面の右上にあるアイコンをクリックします。
メニューが表示されるので、「Settings」を選択します。
![Githubメニュー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/8caa2c72-7ffc-3041-dec2-34137015b8e8.png)


「Public profile」画面が表示されますので、左側のメニューから「SSH and GPG keys」を選択します。
![Githubプロファイル.png](https://qiita-image-store.s3.amazonaws.com/0/259433/6b1724d2-7cf2-c923-061e-f96be2b5f5ab.png)


「SSH and GPG keys」画面が表示されますので、SSH keysの「New SSH Key」ボタンを押下します。
![github SSH.png](https://qiita-image-store.s3.amazonaws.com/0/259433/eab86072-0c3b-ab3c-7e81-26e75ef49941.png)

「SSH keys / Add new」画面が表示されますので、必要な情報を入力し、「Add SSH Key」ボタンを押下します。

- Title:登録するSSHのPCが特定できる名前が良いと思います。
- Key:先程作成した公開鍵の中身を貼り付けます。(c:\home\.ssh\id_rsa.pub)

![GitHub_new_SSH.png](https://qiita-image-store.s3.amazonaws.com/0/259433/8e02b88e-758d-f5cd-65a1-548b63aba388.png)

公開鍵を登録すると、「SSH Keys」に登録した公開鍵が表示されます。

![GitHub_new_SSH2.png](https://qiita-image-store.s3.amazonaws.com/0/259433/e672024b-5efc-16a2-7e15-f9313fdce121.png)


##リポジトリ作成
GitHubで新規にリポジトリを作成します。

左上のアイコンをクリックし、メニューから「Your repositories」を選択します。
![GIthub_リポジトリ作成メニュー.png](https://qiita-image-store.s3.amazonaws.com/0/259433/462472c8-bfeb-3363-db91-aeb32e671f9e.png)

登録してあるリポジトリの一覧画面が表示されます。
「New」ボタンを押下します。
![Github_リポジトリ一覧.png](https://qiita-image-store.s3.amazonaws.com/0/259433/03c12406-b940-af7b-d7ca-e95ad106b1e4.png)

「Create a new repository」画面が表示されますので、リポジトリを登録します。
今回、リポジトリ名と、説明を入力し、READMEファイルは作成するで進めます。入力が終わったら、「Create repository」ボタンを押下します。

- Repository name：登録するリポジトリ名です。(今回は「sample」で登録します)
- Description (optional):説明です。 (今回は「サンプル」で登録します)
- Public:公開で作成します。（Private を選択すると、有償になり、カード等の入力が促されます。）
- Initialize this repository with a README:READMEファイルを作成するかを指定します。
- Add .gitignore:Gitの管理から外したいファイルを指定します。
- Add a license:ラインセンスを指定します。
- 
![Github_リポジトリ作成.png](https://qiita-image-store.s3.amazonaws.com/0/259433/baf8d5c1-c7e1-f641-f682-b2a7247d9866.png)

リポジトリを作成すると下記の画面が表示されます。「Clone to download」ボタンを押下します。
![GitHub_リポジトリ作成後.png](https://qiita-image-store.s3.amazonaws.com/0/259433/d589725c-7d15-a332-d640-ac2343ef4c7c.png)

「Use SSH」を選択します。
![USEHHTP.png](https://qiita-image-store.s3.amazonaws.com/0/259433/4b43040b-d7b6-4d21-a35f-c92006dbc63a.png)

後ほどGitBashから接続する際に、「Clone with SSH」のアドレスを使用しますので、控えておいて下さい。
![USESSH.png](https://qiita-image-store.s3.amazonaws.com/0/259433/dfb9deab-0a43-8269-9c72-c8579cdfc2fb.png)

#GitBashからGitHubへの接続
GitBashからGitHubに接続し、簡単なGit操作を行います。
流れとしては、GitHubからファイルをダウンロード(```clone```)し、ローカルでブランチ(```branch```)を作成します。作成したブランチでファイルの追加(```add```)と、編集を行います。その後コミット(```commit```)を行い。最後にGitHubに反映します(```push```)。

##clone
ローカル環境にGitHubのリポジトリからファイルを取得します。

```bash:GitBash
$ git clone git@github.com:xxxx/sample.git(先程控えたアドレス)
```

コマンドを実行すると、ファイルがダウンロードされます。

```bash:GitBash
$ git clone git@github.com:xxxx/sample.git(先程控えたアドレス)
Cloning into 'sample'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
```

ダウロードしたファイルを確認するために、sampleディレクトリに移動します。

```bash:GitBash
$ cd sampple
```

ディレクトリの中身を確認します。

```bash:GitBash
$ ls
README.md
```

「README.md」の中身を確認します。

```bash:GitBash
$ cat README.md
# sample
サンプル
```


##branch
ブランチを作成します。
最初に現在のブランチの一覧を取得してみます。

```bash:GitBash
$ git branch
* master
```

マスターブランチのみであることがわかりますので、作業用に新規にtopicブランチを作成します。

```bash:GitBash
$ git branch topic
```

新しいブランチが作成されたか、再度ブランチの一覧を取得します。

```bash:GitBash
$ git branch
* master
  topic
```

topicブランチが作成されているので、カレントのブランチを「master」から「topic」に変えます。
カレントのブランチには「*」(スタリスク)がついています。

```bash:GitBash
$ git checkout topic
Switched to branch 'topic'
```


カレントのブランチが変更されたか、再度ブランチの一覧を取得し、カレントのブランチが「topic」に変わっていることが確認出来ます。

```bash:GitBash
$ git branch
  master
* topic
```

##add
新規にファイルを作成して、インデックスに追加します。
また、「README.md」ファイルも変更します。

ファイルを作成します。今回は「addfile」というファイルを作成します。中身は何でも構いません。
編集が終わったらセーブします。

```bash:GitBash
$ vi addfile
```

ファイルが作成された事を確認します。

```bash:GitBash
$ ls
addfile  README.md
```

この時点だとまだインデックスにaddfileは含まれてません。

```bash:GitBash
$ git ls-files
README.md
```

作成したファイルをインデックスに追加します。

```bash:GitBash
$ git add addfile
```

インデックスに含まれたことを確認します。

```bash:GitBash
$ git ls-files
README.md
addfile
```

続いて「README.md」ファイルを更新します。中身はどう編集しても構いません。

```bash:GitBash
$ vi README.md
```

「README.md」ファイルが更新された事を確認します。

```bash:GitBash
$ git ls-files -m
README.md
```

##commit
ローカルリポジトリへ反映します。

下記のコマンドを実行します。

```bash:GitBash
$ git commit
```

viが起動し、コメントを入力するが求められます。

```bash:GitBash

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch topic
# Changes to be committed:
#       new file:   addfile
#
# Changes not staged for commit:
#       modified:   README.md
#
~
```

コメントにも流派があるようですが、今回は１行目にタイトル、２行名は空行、３行目以降は詳細で記載します。

```bash:GitBash
add 初めてのコミット

addfileを追加したよ。
README.mdを編集したよ。
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch topic
# Changes to be committed:
#       new file:   addfile
#
# Changes not staged for commit:
#       modified:   README.md
#
~
```

VIを保存して終了すると、コミットが完了します。

```bash:GitBash
$ git commit
[topic a5888f2] add 初めてのコミット
 1 file changed, 1 insertion(+)
 create mode 100644 addfile
```
##

##push
ローカルあるファイルをGitHubサーバーに反映させます。

```bash:GitBash
$ git push origin topic
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 357 bytes | 357.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'topic' on GitHub by visiting:
remote:      https://github.com/xxxxxx/sample/pull/new/topic
remote:
To github.com:watanabe1975/sample.git
 * [new branch]      topic -> topic
```

#感想
本当にいまさらですが、Windows環境にGitを入れてみました。
特にわかりにくい所はなかったと思いますが、その分忘れてそうなのでまとめてみました。

#参考
[いまさらだけどGitを基本から分かりやすくまとめてみた](https://qiita.com/gold-kou/items/7f6a3b46e2781b0dd4a0)