Windows10でGitHubを始める～①Gitインストール

個人学習メモ。

# 1.Git for Windowsダウンロード
GUIよりCUIで使いたいのでGit for Windowsをダウンロードする。

https://git-scm.com/download/win

64bitの最新版をダウンロードするにはここをクリック、をクリック（2022/02/26時点でVersion 2.35.1）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/9e60d41f-9772-ac60-f7e6-6889775faf22.png)
`Git-2.35.1.2-64-bit.exe`がダウンロードされたら、実行。

# 2.Gitインストールウィザード
これ以降の設定項目はセットアップ後に設定ファイルから変更可能なので、間違えても大丈夫。

## 2-1.GNUライセンスについて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/16c324a1-5db7-a777-c4ab-0dedabb1ce28.png)
Next。

## 2-2.Gitインストールフォルダ設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/b5a1cc24-e1e7-289b-e033-3b566baf15c7.png)
Next。

## 2-3.コンポーネントの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/4e872836-e106-272f-bfde-a27fc78eb0d0.png)
デスクトップにアイコンが欲しいので、`Additional icons`にチェックしてNext。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/46b482e5-efe5-d007-562f-a14e6a22feac.png)

## 2-4.スタートメニューフォルダの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/16ccc4e8-d5b1-0dee-f9c6-b06986d250df.png)
Next。

## 2-5.デフォルトのエディタの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/7208f392-430a-4b4d-ec26-b9241b66bcd5.png)
Gitで使うデフォルトのエディタを選べと言われている。
`Vimは慣れてないと使うのが難しいよ、歴史的な理由でデフォルトのエディタはVimになってるけど、慣れてないならGUIを選択してね（意訳）`と注釈がある。プルダウンを展開すると以下のようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/db4944ef-9aed-da15-d937-f769aac3151d.png)
ここで選択したエディタは後から設定ファイル (/etc/gitconfig もしくは ~/.gitconfig で後者が優先) から変更もできる。vimに慣れたい気持ちもあるし後から変更もできるので、デフォルトのままNext。

## 2-6.最初のメインブランチ名の設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/57b5aee1-9c6d-d6b4-b0d0-3bbe48394903.png)
新しいローカルリポジトリの最初のブランチ名を設定する箇所で、デフォルトだと`master`というブランチ名が使用される。大体本番環境のブランチ名でも`master`を使うのでこのままNext。

## 2-7.環境変数の設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/3e7607d9-828c-b730-477e-5fbfd33ff592.png)
環境変数の設定をする画面。デフォルトで選択されている「Git from the command line and also from 3rd-party software」は`他のコマンドラインツールでgitコマンドを使用できるようにするために必要な最小限の環境変数を設定するよ`と注釈がついている。デフォルトのままNext。

## 2-8.SSH実行可能ファイル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/15d3b092-ad63-7e87-b9ea-472a4071b61f.png)
Gitに付属のssh.exeを使用するか、外部のssh.exeを使用するか選択する。Gitに付属のssh.exeを使用するでいいので、デフォルトのままNext。

## 2-8.HTTPS接続に使用するSSLライブラリの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/f455fea2-4b9a-3de7-2c9b-a6386a76f14f.png)
Git for Windows (の中のMSYS2) に含まれるOpenSSLライブラリを利用する（ルート証明書は「C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt）か、Windows標準のSSLライブラリが利用する（ルート証明書は「certmgr.msc」に入っている）か選択する。あとから変更したくなったら`/etc/gitconfig`(`C:\Program Files\Git\etc\gitconfig`) を編集すればよいので、デフォルト「Use the OpenSSL library」のままNext。

## 2-9.改行コードの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/0a19aa2c-b485-b470-1c4d-3dd36f95a84e.png)
改行コードの変換に関する設定。
Windowsは他のOSと異なる改行コード（CRLF）が使用されているため、他のOSとファイルを共有した場合に改行コードの違いが影響する場合がある。
デフォルトで選択されている「Checkout Windows-style, commit Unix-style line endings」は`ファイルをWindowsに取り込む（チェックアウトする）ときはWindows用（改行コード（CRLF））に変換し、ファイルをバージョンに追加（コミット）するときはUnix用（改行コード（LF））に自動変換する`と説明がある。これがWindows推奨設定で、このままNext。

## 2-10.Git Bashのターミナルの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/64125d2a-9b9f-8810-3ac4-44a8b9d4f14f.png)
Git Bashで使用する[ターミナルエミュレータ](https://wa3.i-3-i.info/word12678.html)を選択する。
Git BashはGitと一緒にインストールされるコマンドラインツールで、Unix系シェルであるBashを搭載しているためUnix系のコマンドが使用できる。
この設定では、Git Bashを開く時に「MinTTY」か「コマンドプロンプト」のどちらを使用するかを選択する。
Minttyはコマンドプロンプトに比べて高機能であるため今回はこのままNext。
※MinTTYでは一部のプログラム（インタラクティブなやり取りのあるプログラム）が正常に動作しないことがあり、その場合は、`winpty`コマンドを頭に付けてを実行するか、Git CMDで実行すればよい。

## 2-11.git pull実行時の挙動設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/34871d97-f7ee-a6cf-c2e4-4e859e19f4d1.png)
`git pull`コマンドを実行した時の動作について設定する。
デフォルトの「Default (fast-forward or merge)」のままNext。
※[fetch](https://backlog.com/ja/git-tutorial/stepup/15/)、[merge、fast-forward、rebase](https://backlog.com/ja/git-tutorial/stepup/04/)の概念を理解してからでないと理解できないので、いったんデフォルトで進める。[^補足1]

[^補足1]:Default(fast-forward or merge)
デフォルト（fast-forward または merge）
This is the standard behavior of `git pull`:fast-forward the current branch to the fetched branch when possible, otherwise create a merge commit.
これは `git pull`の標準的な動作です。可能な場合は現在のブランチをフェッチされたブランチにfast-forwardします。それ以外の場合は、マージコミットを作成します。
Rebase
リベース
Rebase the current branch onto the fetched branch. If there are no local commits to rebase,  this is equivalent to a fast-forward.
現在のブランチをフェッチされたブランチにRebaseします。 Rebaseするローカルコミットがない場合、これはfast-forwardと同等です。
Only ever fast-forward
fast-forwardのみ
Fast-forward to the fetched branch. Fail if that is not possible.
フェッチされたブランチにfast-forwardします。 それが不可能な場合は失敗します。

## 2-12.認証情報ヘルパーの設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/8a182953-e92a-059b-3138-10337ffc5235.png)
ローカルリポジトリからGitHubなどのリモートリポジトリに接続する際の認証方法を設定する。
Git Credential Manager（GCM）はこの認証をサポートするもので、ローカルリポジトリからGitHubなどのリモートリポジトリに接続する際に手動での認証を毎回登録すことなく、安全にクレデンシャル情報を管理してくれるもの。もちろん後から設定変更もできるのでこのままNext。[^補足2]

[^補足2]:別の記事で執筆予定。

## 2-13.その他オプション設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/ff5c405c-8dea-0dd0-c73b-95b47965d06d.png)
その他のオプション設定。
デフォルトでチェックがついている「Enable file system caching」はファイルの変更情報などをメモリにキャッシュする。
「Enable symbolic links」は[シンボリックリンク（別の場所のファイルの場所情報を持つファイル）](https://wa3.i-3-i.info/word1151.html)を有効化する。デフォルトのままNext。

## 2-14.実験的オプション設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/c3bb71bb-f3e1-db68-928f-06534cb425d3.png)
実験的オプション機能の有効か設定。何も選択せずこのままInstall。
インストールが開始される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/d4a620db-f084-cf5f-5651-ff849d356259.png)
数秒で終了。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/49172664-8219-15eb-fba3-9bdefbdd0fc4.png)
Git Bashを起動する、リリースノートを見る、というチェックボックスがあるが、今回はチェックはせずにFinish。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/24347464-f2d8-7877-6b3b-748f52b1bb89.png)

これでGit for Windowsのインストールが完了。

# 3.Gitコマンド試行
Git Bashを開いて、Gitコマンドが使えるか試してみる。
スタートメニューもしくはデスクトップのGit BashアイコンをクリックしてGit Bashを立ち上げる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/91d5f23d-c02f-d2c9-c998-a5f3ab654337.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/03727e97-37c5-5d1a-5b1d-619cb1999523.png)

次のコマンドを実行して、Gitのバージョン確認コマンドを実行してみる。

```
git --version
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/ece1433a-ff6a-9f6c-c740-f396b1713f19.png)
バージョンが確認できたらOK。
`exit`コマンドでGit Bashを閉じる。

# 4.ここまでの個人的つまずきポイント

 - インストールウィザードが長い
 - 全部英語で解読に苦労
 - 英語が解読できてもGitに関する動きや用語について詳しくないので挙動のイメージがつかない
   - なるべく調べたり注釈をつけたりした

# 参考
[Windows10でGitHubを始める～⓪Gitの概念とインストールソフトの種類](https://qiita.com/emiki/items/5c8e52cf6b8506015462)
[Windows10でGitHubを始める～①Gitインストール](https://qiita.com/emiki/items/c0aa0b4da4b63921b153)
[Windows10でGitHubを始める～①'おまけGitホームディレクトリ変更](https://qiita.com/emiki/items/d3f7c054b70171218f64)
[Windows10でGitHubを始める～②GitHubアカウント作成](https://qiita.com/emiki/items/dadf77e9ae1e2b192323)
[Windows10でGitHubを始める～③GitHubでのメールアドレス設定とGitクライアントでのユーザ名・メールアドレス設定](https://qiita.com/emiki/items/4103150a5d7a7cfbff24)
[Windows10でGitHubを始める～③'おまけユーザ名・メールアドレス設定について詳細](https://qiita.com/emiki/items/24212696b54fd16e8af8)
[Windows10でGitHubを始める～④リモートリポジトリの作成（GitHub）](https://qiita.com/emiki/items/5080d948af4a2d0febf5)
[Windows10でGitHubを始める～⑤Githubにプッシュする](https://qiita.com/emiki/items/a2871ab626396e95d9ec)
[Windows10でGitHubを始める～⑥-0.Git～GitHub間の認証について](https://qiita.com/emiki/items/eeaf77d51aadef98aea9)
[Windows10でGitHubを始める～⑥-1.Git操作時のGitHub認証HTTPS（Git Credential Manager）](https://qiita.com/emiki/items/3f2ebda7280374fb3bb7)
[Windows10でGitHubを始める～⑥-2.Git操作時のGitHub認証HTTPS（Personal access token）](https://qiita.com/emiki/items/498b05ede19eee3ad916)
[Windows10でGitHubを始める～⑥-3.Git操作時のGitHub認証SSH編](https://qiita.com/emiki/items/1f1fc0bf0c2c4347148d)
[Windows10でGitHubを始める～⑦GitHubへのPullRequest](https://qiita.com/emiki/items/8619441dca761869177f)

詳しくてありがたい↓

https://laboradian.com/git-installation-on-wndows/

https://it-kyujin.jp/article/detail/263/

https://prog-8.com/docs/git-env-win

https://qiita.com/skkzsh/items/11dd107a0734fec682b8

https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98