GitとSourcetreeのインストールから、GitHubとBitbucketとのssh接続までの初期設定手順【Windows】

WindowsユーザーでGitのクライアントツールとしてSourcetreeを使用して、GitHubとBitbucketのリポジトリと接続する人向けの初期設定手順です。

Gitについて、Sourcetreeの内蔵Gitを使用する手もありますが、コマンドプロンプトでgitコマンドが使えなかったり、Sourcetreeの起動も遅くなる(らしい)ので、Git for windwosをインストールして、SourcetreeではシステムGitを使用する設定を紹介したいと思います。

手順概要としては以下のとおりです。

1. Git for Windows, Sourcetreeのインストール
2. sshキーの生成とGit Bashでの読み込み
3. Sourcetreeでのsshキーの読み込み
4. GitHub, Bitbucketでsshキーの登録

## Git for windowsのインストール

[Git for windows公式サイト](https://gitforwindows.org/)からインストーラをダウンロードし、ダウンロードしたインストーラを実行します。

インストーラのデフォルト設定のままでもいいと思いますが、私の設定、また、個人的に設定を変更した方がいいと思う部分について、記載したいと思います。個人的に設定を変更したほうがいいと思っている箇所については【変更推奨】という印を付けています。

* インストールするコンポーネントの設定画面 
![2020-01-12_18h41_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/fa89db22-dcaf-dd41-57e4-9f9eb3c6a1c7.png)
 * [Additional icons]のチェックを外す
     * Git Bashは基本的に、Sourcetreeを経由して使用するので、Git Bashへのショートカットを作成しないようにした
 * [Windows Explorer integration]のチェックを外す
     * Explorerからgitを使用することもないのでチェックは外した

* デフォルトのエディタ設定
![2020-01-12_18h42_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/bec4d739-ad54-0ebf-d848-d6c453228df4.png)
 * サクラエディタを設定
     * コミットメッセージ等を編集するときに使用するエディタの設定。テキストを簡単に修正することしかないので、シンプルかつ起動が早いサクラエディタを設定しています。好みのエディタを設定すればいいと思います

* 改行コードの変換設定
![2020-01-12_18h43_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/fbd4cd85-bd84-d15f-cf18-9d1a3906eba8.png)
 * 【変更推奨】[Checkout as-is, commit Unix-style line endings]を選択
     * Dockerを使用する場合などで改行コードがLF→CRLFに変換されると起動しなくなったりするので、チェックアウト時は改行コードの自動変換がされない設定にします
     * Windowsでファイルを作成したとき、改行コードがCRLFになることが多いのですが、リポジトリではLFで管理したいので、改行コードLFに変換するようにします（Gitでは基本はLFで保存することが推奨されている）

## SourceTreeのインストール

[Sourcetree公式](https://www.sourcetreeapp.com/)よりインストーラのダウンロードし、ダウンロードしたインストーラを実行します。
インストール時の注意点は以下のとおりです。

* 途中で、Bitbucketのログインが求められたら、Bitbucketのアカウントを作成し、ログインします
* Mercuialは使わないのでインストールしなくていいです
* SSHキーを読み込ませるか聞かれたら、[いいえ]を選択してください

## sshキーの作成と、Git bashにsshキーの登録

以前sshキーを作成している場合は、ホームディレクトリ直下の.sshディレクトリにid_rsa, id_rsa.pub, id_rsa.ppkファイル等がある場合があります。 
今回紹介する手順では、id_rsa, id_rsa.pub, id_rsa.ppkファイルを作成しますので、ファイル名の変更、または.sshディレクトリのディレクトリ名の変更、または生成するファイル名を別の名前で保存し、今回の手順で適宜読み替えて作業を進めてください。

1. Git Bashを開き、「ssh-keygen」コマンドを発行。sshキーのファイル名を聞かれますが、デフォルトのままでいいと思います。デフォルトのままにする場合は、何も入力せずにEnterキーを打ちます。

```
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/mongol/.ssh/id_rsa):
Created directory '/c/Users/mongol/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/mongol/.ssh/id_rsa.
Your public key has been saved in /c/Users/mongol/.ssh/id_rsa.pub.
The key fingerprint is: 
SHA256:(以下省略)
```

2. そのままGit Bashで「ls .ssh -l」コマンドを発行し、id_rsaとid_rsa.pubの2ファイルが生成されたことを確認します

```
$ ls ~/.ssh -l
total 5
-rw-r--r-- 1 mongol 197609 2602 12月 22 14:41 id_rsa
-rw-r--r-- 1 mongol 197609  572 12月 22 14:41 id_rsa.pub
```

3. そのままGit Bashを使用して、`eval $(ssh-agent)`コマンドを発行し、ssh-agentを起動します。`ssh-add ~/.ssh/id_rsa`コマンドを発行し、sshキーを登録します。

```
$ eval $(ssh-agent)
Agent pid 9700
$ ssh-add ~/.ssh/id_rsa
Identity added: /c/Users/mongol/.ssh/id_rsa (mongol@mongol-note-pc)
```

これでGit Bashにsshキーが登録できました。

## SourceTreeでのSSHキー読み込み
ssh-keygenで生成したsshキーはOpenSSH形式ですが、SourceTreeではPuTTyを利用してssh通信を行うため、PuTTy形式のsshキーが必要になります。
PuTTYを使ってPuTTY形式のsshの秘密鍵(プライペートキー)を作成して読み込ませる必要があります。

1. PuTTy形式のSSHプライベートキーの作成します。Sourcetreeを開いて、ツールバーの[ツール] > [SSHキーの作成/インポート]をクリックします。PuTTY Key Generatorウィンドウが開きます
2. [Actions]の[Load]ボタンをクリックします。開いたファイル選択ダイアログでは.ppkファイルのみに絞られているので、All Filesにして、id_rsaを選択します。 
![2020-01-12_21h56_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/91d89321-e658-168f-ebd4-19e135995cff.png)
![2020-01-12_21h57_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/2234eb6f-899b-4e34-fb95-6886f3db8f73.png)
3. 警告が出ますが、OKをクリックします。   
![2020-01-12_21h55_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/36a8705d-348f-60bc-097b-8c70b337f61a.png)
4. [Actions]の[Save private key]ボタンをクリックします。passphraseなしで保存していいかという旨の警告が出てきますので、OKボタンをクリックします。id_rsa.ppkというファイル名でPuTTY形式の秘密鍵を保存します。  
![2020-01-12_22h01_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/5d60450e-fd9b-6902-ce04-d6f7aa5ece08.png) 
5. タスクトレイから「Pageagent」を右クリックし、「Add Key」を選択します  
![2019-12-22_16h38_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/7d323cc5-90bd-010d-1333-598cf50ffeab.png) 
![2020-01-12_23h36_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/97c14cc4-7199-1d6f-68ea-5d17e7c0b114.png) 
6. 同じくタスクトレイから「Pageagent」を右クリックし、「View Keys」を選択。読み込まれていることを確認します  
![2019-12-22_16h40_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/143393/76b20cbc-8422-045b-54ca-cc09a592d8ca.png)

## GitHubとBitbucketに公開キーを登録

1. GitHubに公開キーを追加
    1. GitHubを開き、右上の自分のアイコンをクリックし、[Settings]を選択します
    2. 左のナビゲーションバーから[SSH and GPG keys]を選択し、SSH keysの画面が開くので、[New SSH key]ボタンをクリックします。
    3. TitleにSSHキーの登録名を任意に設定し(端末名が分かるようにしておくと良い)、keyに.sshフォルダのid_rsa.pubの中身をコピペします。[Add SSH key]ボタンをクリックします

2. Bitbucketに公開キーを追加
    1. Bitbucketを開き、左下の自分のアイコンをクリックし、[Bitbucket settings]を選択します
    2. 左のナビゲーションバーから[SSH鍵]を選択し、SSH 鍵の画面が開くので、[鍵を追加]ボタンをクリックします。
    3. LabelにSSHキーの登録名を任意に設定し(端末名が分かるようにしておくと良い)、keyに.sshフォルダのid_rsa.pubの中身をコピペします。[鍵を追加]ボタンをクリックします