今回は Obsidian Git を用いて、Mac と iPhone の間で Obsidian の Vault を同期させようとした際にハマった問題と、その回避策について備忘録がてら書きます。
対象
- Mac と iPhone の両方で Obsidian を使っている/使いたい
- 既存の Vault を GitHub で管理しているが、なぜか Obsidian Git でリポジトリを Pull することができない
発生していた問題
PC とモバイル端末で Obsidian の Vault を同期させる方法はいくつかあります。
- Obsidian 公式の Obsidian Sync
- iCloud などのクラウドストレージ
- Obsidian Git
- Remotely Save
- Self-hosted LiveSync
自分の用途的には Obsidian Git を使って GitHub 経由で同期できればよいかなと思っていたんですが、iPhone 側で Vault を作成し、Obsidian Git をインストールして Personal Access Token (PAT) をセットし、いざ Git: Clone an existing remote repo
をしても、何も起きない事象が発生していました。
どうやら、GitHub で管理されているファイルの数が多いと扱いきれない問題 [1] があるようです。 Pull ができない件は Issue #642 で同様の事象が報告されています。
一旦 GitHub 経由での同期を諦めて iCloud 経由で同期していたのですが、ふと思い立って「iPhone 側で clone するのではなく、Mac 側で clone したディレクトリを物理的に iPhone にコピーする」という方法を試したら、うまくセットアップすることができました [2] 。
以下で詳しく手順を説明します。
この方法は自分が偶然遭遇した問題に対する、一時的な回避策です。将来的に Obsidian Git プラグインが更新されれば、正規の方法で Clone できるようになる可能性があります。 また その他の方法 で触れているように、Working Copy を利用する方法もあります。
対処方法
1. Mac 側での準備
まず、同期したい Vault について、すべての変更を Commit / Push しておき、クリーンな状態にしておきます。
# 既存の Vault ディレクトリで
git add .
git commit -m "Sync for iPhone"
git push origin main
2. iPhone 側での初期設定
iPhone 側で、iPhone のローカル環境に空の Vault を作成します。この時点では何もファイルがない状態で OK です。
3. Mac 側で別ディレクトリに Clone
既存のディレクトリとは別の場所に、同期したい Vault を Clone します。
# 適当な作業ディレクトリで
git clone https://github.com/your-username/your-vault.git vault-for-iphone
4. iPhone への転送
iPhone と Mac を接続して、Finder から、iPhone のローカルに Clone したディレクトリ全体(.git
ディレクトリも含む)をコピーします。
5. iPhone での設定
iPhone 側で以下の設定を行います:
- Obsidian Git プラグインをインストールする
- GitHub の Personal Access Token (PAT) を発行
- プラグインの設定から PAT を設定
自分の場合、iPhone での Obsidian は主に閲覧専用として使うつもりなので、Vault をホストしているリポジトリに対して Contents
と Metadata
の Read-only 権限があれば十分でした。
また、もし SSH で clone している場合は、Git: Edit remotes
で remote の URL を HTTPS に変更しておく必要があります。
6. 最終確認
すべての設定が済んだら、Git: Pull
コマンドで差分を pull できるようになります。
これで PC と iPhone の間で Vault の内容を同期させることができるようになりました🎉
その他の方法
よくよく調べてみると、Obsidian Git を使わず Working Copy という iOS 向けの Git client を使って pull/push するというやり方もあるようです。 公式のドキュメントにも記載があります。
Mac と iPhone を物理的に接続する手段がない場合は、こちらを検討してもよいかもしれません。
また、自分もさらにファイル数などが増えてきて、Obsidian Git による運用では耐えられなくなってきた場合はこちらの手段を検討していこうかと思います。
まとめ
Obsidian Git を用いた Obsidian Vault の同期で、iPhone 側の初期化がうまくいかない問題についての回避策を紹介しました。
もし同じような問題でお困りの方の参考になれば幸いです。もし他に良い方法をご存知でしたら、ぜひ教えていただけると嬉しいです。
最後までお読みいただき、ありがとうございました。