BitbucketからローカルのMacにgitクローンする方法

本文は以下のような方を想定しています。

- 開発と協力をしてプロジェクトを進めているフロントエンドエンジニア
- Gitは軽く知っているが不慣れである
- Bitbucketでgit管理、ほぼ初めて使う
- VS Codeで開発している
- 環境はMacOSX系
- ターミナルを多少触ったことがある
- Bitbucketの環境は用意されているがローカルへクローンして開発を進めていきたい



##01. ssh鍵の準備・設定
Bitbucketからクローンするためには管理画面からsshの公開鍵を登録する必要があります。そのため、まずローカル環境でssh鍵の作成をする必要があります。
（すでにBitbucketへのssh鍵の登録ができていれば2まで飛ばしてOKです。）
###01-01. 秘密鍵・公開鍵の発行
ターミナルでコマンド操作をし、ssh鍵を作成します。

ターミナルを起動、homeにいる状態で、.sshフォルダに移動。

```shell:ターミナル
cd .ssh
```

ssh-keygenで秘密鍵・公開鍵を作成。

```shell:ターミナル
ssh-keygen -t rsa -b 4096
```

lsで秘密鍵が発行されていること、パーミッションが問題ないことを確認。

```shell:ターミナル
ls -la
-rw-------   1 username  staff  1921 11 17 10:30 id_rsa
-rw-r--r--   1 username  staff   426 11 17 10:30 id_rsa.pub
```

また、すでに「id_rsa」があり、名前を変えて鍵を発行したい場合は以下のように名前を指定して作成。※bitbucketkeyは任意の名前

``` shell:ターミナル
ssh-keygen -t rsa -f bitbucketkey
```

###01-02. .ssh/configに登録
作成した公開鍵の中身を確認し、コピーします。

catで公開鍵を開く。

```shell:ターミナル
cat id_rsa.pub
ssh-rsa AAAAFFEKPAgeagaAGJAKBBADBANBADGAKFAJLFADSJGA~~~中略~~~EAGEDBAKGKEAFAMVAMGEWKADFKADVADBKMAWOVAGAELVAKWBAMBEWFEAKJAWVAKWKGAEWNFAKEFAKAEGVAGNADAJGAENAJFAJSAGNG==
```

ssh-rsaから始まる長い文字列を全てコピーします。

###01-03. Bitbucketへ公開鍵を登録
Bitbucketにアクセスし、「アイコン」→「view profile」→「設定」→「SSH 鍵」→「鍵を追加」と開きます。  

![bitbucket.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229958/9034094e-e2a0-804e-2a8e-23225c719bec.png)

ターミナルでコピーした公開鍵の文字列を貼り付けます。label部分はわかりやすい名前であればなんでも構いません。
![bitbucket02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229958/e428a611-e620-67c6-14cb-52db1d902442.png)


貼り付けたら「鍵を追加」ボタンを押して登録完了です。

###01-04. 疎通確認
Bitbucketの設定が完了したら、次は疎通確認です。ターミナルに戻り、sshのコマンドでBitbucketにアクセスできるか確認します。

```shell:ターミナル
 ssh -T git@bitbucket.org
```
「logged in as "Bitbucketユーザー名"」と表示されたら成功

###ex01. 名前を変えた、または複数の秘密鍵がある場合の注意点
名前を変えて登録すると、うまくアクセスできない場合があります。
その場合は以下の設定をしてください。

####ex01-01. sshコンフィグの登録
sshコンフィグの設定をします。
.sshフォルダのコンフィグファイルを開きます。

```shell:ターミナル
vim ~/.ssh/config
```

configを開いたら内容に以下を追記し保存します。

```vim:config
Host bitbucket
    HostName bitbucket.org
    IdentityFile ~/.ssh/bitbucketkey
    User git
```

####ex01-02. ssh-addの設定
合わせてssh-addで、秘密鍵を登録します。

```shell:ターミナル
ssh-add ~/.ssh/bitbucketkey
```

これらの設定ができたら、再度疎通確認を試してください。

####ex01-03. ssh-addの永続化
ssh-addに登録した内容は、macを再起動するとリセットされます。
毎回ssh-addをするのが面倒な人は以下の設定を行います。

ex01-01のconfigに以下を追記
```vim:config
Host bitbucket
    HostName bitbucket.org
    IdentityFile ~/.ssh/bitbucketkey
    User git
    UseKeychain yes
    AddKeysToAgent yes
```

```shell:ターミナル
ssh-add -K ~/.ssh/bitbucketkey
```
参考元：
[macOS で再起動しても ssh agent に秘密鍵を保持させ続ける二つの方法](https://qiita.com/sonots/items/a6dec06f95fca4757d4a)


##02. ローカルにクローンする
bitbucketのプロジェクトをローカルにクローンします。

###02-01. クローン用フォルダの作成
bitbucketのデータを置くために任意のフォルダを作成してください。

ターミナルで作成したフォルダに移動。

```shell:ターミナル
 cd ~/project/bitbucket
```

###02-02. プロジェクトのクローン元アドレスをコピー
bitbucketのプロジェクト詳細画面より「クローンを作成」→「SSHが選択されているのを確認」→「コピーアイコンをクリック」の順に操作します。
![bitbucket03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229958/acc902df-a165-bacc-8742-5f95dec5c1dc.png)

これでクローンに必要なアドレスがコピーできました。

###02-03. クローンを実行
ターミナルに戻り、先ほどコピーした内容を貼り付け、Enterでクローンを実行します。

```shell:ターミナル
 git clone git@bitbucket.org:dev/hogeprj.git
```

データが落ちてくれば、成功です！

###ex02. ブランチする
ローカルにクローンできたらブランチしときましょう。

```shell:ターミナル
git branch --set-upstream-to=origin/develop develop
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
```