Skip to content

Obsidian Git で iPhone 側の pull ができない問題とその回避策

目次

今回は Obsidian Git を用いて、Mac と iPhone の間で Obsidian の Vault を同期させようとした際にハマった問題と、その回避策について備忘録がてら書きます。

対象

  • Mac と iPhone の両方で Obsidian を使っている/使いたい
  • 既存の Vault を GitHub で管理しているが、なぜか Obsidian Git でリポジトリを Pull することができない

発生していた問題

PC とモバイル端末で Obsidian の Vault を同期させる方法はいくつかあります。

自分の用途的には 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]

以下で詳しく手順を説明します。

対処方法

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 をホストしているリポジトリに対して ContentsMetadata の 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 側の初期化がうまくいかない問題についての回避策を紹介しました。

もし同じような問題でお困りの方の参考になれば幸いです。もし他に良い方法をご存知でしたら、ぜひ教えていただけると嬉しいです。

最後までお読みいただき、ありがとうございました。


[2]
後になって見つけたのですが、issue 内のコメント で紹介されているワークアラウンドと同じ方法でした