Kobitoを複数のPCで共有する方法：Github管理


## 概要
エンジニア関連のメモは、すべてKobitoで管理しています。

個人開発と会社開発で学んだことをKobitoに書き込んでいますが、どのように共有すれば良いか試行錯誤しました。

最初はDropboxにデータを上げて同期する方法をやってみましたが、リアルタイムで反映されずに差分が発生し、データが壊れてしました。

そこでGithub管理にしたところ、コンフリクトさえ起きないように注意すれば、正常にデータが反映されて複数のPCでも楽に共有できます。

その手順を紹介します。

## 前提
### 必要となる知識
#### Git
- Githubで管理するので、Gitの基本的な使い方を知っている必要があります。
- Gitの使い方はこちらを参照ください。

[サルでもわかるGit入門](https://www.backlog.jp/git-guide/)
[Progate：Git](http://prog-8.com/languages/git)

#### Githubに公開鍵を登録する方法
- 複数のPCでGithubにアクセスするので、その方法を知っている必要があります。
- 公開鍵を登録する方法は以下を参照ください。

[SSHの公開鍵を作成しGithubに登録する手順](http://monsat.hatenablog.com/entry/generating-ssh-keys-for-github)

### できなかった同期する方法
#### [KobitoのファイルをDropboxで同期とる(Kobito2.2.0)](http://qiita.com/koyopro/items/2122b6d9d20d578c85f2)
Dropboxにデータを置いて、共有する方法です。

こちらにも書いてありますが、現状うまく同期できずに差分が発生します。

## 手順
### Kobitoのデータが格納されている場所を確認
- まずKobitoデータがどこにあるかを調べます。
- 基本的には以下の場所にあるので、移動します。

```
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito
```

- 内容を確認します。

```
$ls -1
Backups
Kobito.db
Kobito.db-shm
Kobito.db-wal
```

- ここで表示された `Kobito.db` 類がデータとなります。 
- この `~/Library/Containers/com.qiita.Kobito/Data/Library/Kobito` をGithubで管理することで複数のPCで共有します。

### Githubに登録
#### リポジトリの作成
- Githubで『New repository』をクリックします。

![スクリーンショット 2017-08-31 19.18.06.png](https://qiita-image-store.s3.amazonaws.com/0/142810/b76c76f0-716a-da53-6d06-e76ece1b00f1.png "スクリーンショット 2017-08-31 19.18.06.png")

#### リポジトリの登録

![スクリーンショット 2017-08-31 19.23.37.png](https://qiita-image-store.s3.amazonaws.com/0/142810/46ce61aa-57a3-b803-b122-f5969cb6560b.png "スクリーンショット 2017-08-31 19.23.37.png")

##### Repository name
- `Kobito` と入力します。
- ここはローカルのディレクトリ名と同じにする必要があります。

##### Description
- 適切な説明を入力します。

##### repositoryの種類
- 個人データなのでPrivateが望ましいです。
- 実際に共有できるか試す場合は、一旦Publicにしても良いと思います。

##### 準備できたら登録
- 『Create repository』をクリックします。

#### 登録するコマンドの表示
- リポジトリを作成すると以下の画面になります。
- 赤囲みで表示されているコマンドを入力していきます。

![スクリーンショット 2017-08-31 19.34.10 2.png](https://qiita-image-store.s3.amazonaws.com/0/142810/61b14e51-a582-bedc-dafb-10894311aefe.png "スクリーンショット 2017-08-31 19.34.10 2.png")

### Kobitoをリポジトリにプッシュ
- PCにてKobitoにいるか確認します。

```
$ pwd
/Users/user_name/Library/Containers/com.qiita.Kobito/Data/Library/Kobito
```

- 先ほど表示されたコマンドを1つずつ実行していきます。

```
$ echo "# Kobito" >> README.md
```

```
$ git init
```

```
$ git add README.md
```

```
$ git commit -m "first commit"
```

```
$ git remote add origin git@github.com:user_name/Kobito.git
```

```
$ git push -u origin master
```

- これでリポジトリにプッシュができました。

### 他のPCでもKobitoを共有する
#### リポジトリにプッシュしたPC以外での作業です。
- そのPCにもKobitoをインストールします。
- 以下の場所に移動します。

```
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library/
```

- 一旦Kobitoディレクトリを削除します。

```
$ rm -rf Kobito/
```

- GithubのリポジトリからKobitoをクローンするコマンドをコピーします。

![スクリーンショット 2017-08-31 20.06.25.png](https://qiita-image-store.s3.amazonaws.com/0/142810/7bec18af-66f4-9d75-3314-df04af1996fd.png "スクリーンショット 2017-08-31 20.06.25.png")

- コピーしたコマンドを実行します。

```
$ git clone git@github.com:user_name/Kobito.git
```

- Kobitoディレクトリが作成されているか確認します。

```
$ cd Kobito/
```

```
$ pwd
/Users/user_name/Library/Containers/com.qiita.Kobito/Data/Library/Kobito
```

- データを確認します。

```
$ ls -1
Backups
Kobito.db
Kobito.db-shm
Kobito.db-wal
```

- これでGithubのリポジトリからKobitoを持って来れました。
- Kobitoを立ち上げると、リポジトリにプッシュしたPCの内容と同じが表示されます。
- もし表示されない場合は、一度Kobitoを終了してから、もう一度開いてください。正常にデータが読み込めていない可能性が高いです。
- 以上が複数のPCでKobitoを共有する方法になります。

<br>
### コンフリクトが起きた時の解消方法
- コードのようにコンフリクトした箇所を修正して、最新状態にすることができません。
- なので、Githubからもう一度クローンします。

#### 手順
- コンフリクトしたPCで以下のディレクトリに移動します。

```
$ cd ~/Library/Containers/com.qiita.Kobito/Data/Library
```

- Kobitoを削除します。

```
$ rm -rf Kobito/
```

- githubからクローンします。

```
$ git clone git@github.com:user_name/Kobito.git
```

- 以上で解消します。