[Bitbucket]gitコマンドでBitbucketを操作する　〜基本編〜


BitbucketはGitHubと異なり、非公開を前提としたリポジトリ管理が無料できます。そのため、個人で作ったプログラムや、知人から請け負っている仕事のプログラムなどを管理するのはこちらを使っています。

今回は基本編としてBitbucket上のリモートリポジトリにpushするところまで記載します。

なおBitbucketは[Atlassian](https://www.atlassian.com/ja)が提供していて、[JIRA](https://www.atlassian.com/ja/software/jira)などのプロジェクト管理サービスも提供しています。

#前提
* ローカルリポジトリサーバ:CentOS 6.5
* Bitbucketユーザ：test
* リモートリポジトリ:testrepo
* ローカルリポジトリパス:/opt/app/testrepo
* 接続プロトコル:SSH
* gitはインストール済

  ※gitのインストール方法は[こちら](http://git-scm.com/book/ja/v1/使い始める-Gitのインストール)が参考になります

##SSH鍵の登録
Bitbucketとの接続にはSSHプロトコルを用いますが、公開鍵をBitbucketのユーザと紐づける必要があります。

###公開鍵の作成
```Bash
$ cd ~/.ssh
##Bitbucket用のディレクトリ作成(test@hoge.comは自身のメールアドレスに読み替え)
$ mkdir bitbucket
$ cd bitbucket
$ ssh-keygen -t rsa -C test@hoge.com
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ユーザ名/.ssh/id_rsa): /home/ユーザ名/.ssh/bitbucket/id_rsa #[先ほど作成したディレクトリパスに変更]
Enter passphrase (empty for no passphrase): #[enterを押す] 
Enter same passphrase again: #[enterを押す]
・
・
・
```
[BitbucketのHP](https://confluence.atlassian.com/display/BITBUCKET/How+to+install+a+public+key+on+your+Bitbucket+account;jsessionid=9701B0F35C65FA47E4DF6E2A241DF885.node1)にも作成方法の記載があります。

###公開鍵をBitbucketに登録
先ほど作成した公開鍵をBitbucketに登録します。
まずはログイン後、画面右上のアイコンにマウスオーバーし、アカウントの管理を選択。

![スクリーンショット 2015-05-10 8.56.50.png](https://qiita-image-store.s3.amazonaws.com/0/21630/92fe6589-0f36-54a3-bdbd-95d3cd37cc93.png "スクリーンショット 2015-05-10 8.56.50.png")

次に、左カラムからSSHキーを選択し、画面右の鍵を追加ボタンをクリック。

![スクリーンショット 2015-05-10 8.58.37.png](https://qiita-image-store.s3.amazonaws.com/0/21630/16808311-5647-078b-457b-cc86fd3bbe01.png "スクリーンショット 2015-05-10 8.58.37.png")

下記のようなpopup画面が表示されるので、好きなLabel名と先ほど作った公開鍵の中身をKeyに貼り付けます。
※鍵の作成場所を変更しているので、
```$ cat ~/.ssh/bitbucket/id_rsa.pub | pbcopy```
を実行した後に、そのまま貼り付けをすればOKです。

![スクリーンショット 2015-05-10 8.56.02.png](https://qiita-image-store.s3.amazonaws.com/0/21630/ea83eeae-19b0-d6c3-c39a-bdd9ba88a7a3.png "スクリーンショット 2015-05-10 8.56.02.png")

###サーバ側の設定
configファイルを作り、bitbucketへの接続は自動的にbitbucket配下の鍵が使われるようにします。

```Bash
$ cd ~/.ssh
$ touch config
$ chmod 700 config
$ vi config
```

configを以下の通り設定します。

```
Host bitbucket.org
  HostName bitbucket.org
  IdentityFile ~/.ssh/bitbucket/id_rsa
  User git
  Port 22
  TCPKeepAlive yes
  IdentitiesOnly yes
```

入力が終わったら```:wq```で保存して終了。
ちなみに各項目の設定は以下の通りです。

| 設定値          | 説明        |
|:---------------|:------------|
| Host           |     ホスト名 |
| HostName       | ホストのアドレス or IP |
| IdentityFile   |  秘密鍵のパス |
| User           | ログインユーザ |
| Port           |       ポート |
| TCPKeepAlive   |    持続的接続 |
| IdentitiesOnly | ヘルスチェック|

###接続のテスト
サーバ側から接続のテストを行います。

```Bash
$ ssh -T bitbucket.org
logged in as yyamanaka.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
```

エラーが表示されなければOK。

##ローカルリポジトリの作成
CentOS上にローカルリポジトリを作成します。

```Bash
##ローカルリポジトリのディレクトリを作成
$ mkdir /opt/app/testrepo
$ cd /opt/app/testrepo

##git初期化
$ git init

##リモートリポジトリをコピー
$ git remote add origin git@bitbucket.org:test/testrepo.git
##紐付きを確認
$ git remote -v
```

これで/opt/app/testrepoがリモートリポジトリと紐付きました。
実際にファイルをpushしてみます。

```Bash
# サンプルファイルの作成
$ echo "This is sample file." > test.txt
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   test.txt
#
$ git add test.txt
$ git commit -m "First Commit"
$ git push 
```
これでBitbucket上のリモートリポジトリにtest.txtが反映されます。

##参考リンク
Bitbucket:
　https://www.atlassian.com/ja/software/bitbucket/overview
Bitbucket Document:
　https://confluence.atlassian.com/display/BITBUCKET/Bitbucket+Documentation+Home
サルでもわかるGit入門:
　http://www.backlog.jp/git-guide/
Git公式ドキュメント（リモートブランチ）: 
  http://git-scm.com/book/ja/v1/Git-%E3%81%AE%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81%E6%A9%9F%E8%83%BD-%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%96%E3%83%A9%E3%83%B3%E3%83%81
　
以上です。