🔧

【Obsidian】Gitプラグインでの管理におけるPCとスマホ間のWorkspace同期競合を解消する

に公開

はじめに

Obsidian を GitHub で管理しており、複数端末でノートを同期したい場合、Obsidian の Git プラグインを使うことが多いと思います。

https://github.com/Vinzent03/obsidian-git

しかし、この方法で同期設定を行うと、端末間での競合が発生して同期エラーとなることがよくあります。

特に、 Obsidian の各種設定ファイルが格納されている.obsidian ディレクトリ内の.obsidian/workspace.json (PC 用ワークスペースの設定) と .obsidian/workspace-mobile.json (スマホ用ワークスペースの設定) が競合の原因となることが多いです。

これらはワークスペースの情報を管理するファイルであり、Obsidian で開くノートを変えるだけでも自動で内容が書き換えられるため、競合の原因になりがちです。

この記事では、既に Git リポジトリに .obsidian ディレクトリをアップロードしてしまっている場合に、無視したいファイルをローカル環境から削除することなく Git の追跡対象から外し、今後のコミットで無視するようにするための手順を説明します。

想定状況

Obsidian に Git プラグインを追加し、Vault を GitHub のリモートリポジトリで管理している状況を想定します。

そして GitHub に.obsidianディレクトリがあり、その中に.obsidian/workspace.json.obsidian/workspace-mobile.jsonの 2 つがある場合の対処法です。

作業概要

リポジトリのルートディレクトリに .gitignoreを追加することで、Git 管理から除外するファイルを指定します。

仮に .gitignore.obsidian と追加すれば、.obsidian ディレクトリ全体を一括して Git の追跡対象から外すことが可能です。

しかし、.obsidian ディレクトリにはコミュニティプラグインやテンプレートなどの設定ファイルも含まれており、これらは複数端末間で共有できると楽です。

そのため、全ての設定ファイルを無視するのではなく、特に変更が多く競合が発生しやすい .obsidian/workspace.json (PC 用のワークスペース) .obsidian/workspace-mobile.json (モバイル用のワークスペース) だけを無視するようにすると使い勝手がいいと思います。

手順

以下の手順を実施します。

  1. Git の追跡からファイルを外す。
    Git の追跡から .obsidian/workspace.json.obsidian/workspace-mobile.json を削除します。

    git rm --cached .obsidian/workspace.json .obsidian/workspace-mobile.json
    
  2. .gitignore に追跡対象外とするファイル名を追加する。
    リポジトリのルートディレクトリに.gitignoreが無い場合は新規作成します。
    すでに.gitignoreがある場合は、.gitignoreを開いて以下の 2 行を追記してください。

    .obsidian/workspace.json
    .obsidian/workspace-mobile.json
    

    これにより、今後の Git 操作で .obsidian/workspace.json.obsidian/workspace-mobile.json が無視されるようになります。

  3. 変更内容を適用する。
    ファイルの追跡解除と .gitignore への変更を Git の履歴に記録します。

    git add .gitignore
    git commit -m "Stop tracking files and add to .gitignore"
    git push origin <ブランチ名>
    

この手順を完了すると、GitHub 上のリポジトリには .obsidian/workspace.json.obsidian/workspace-mobile.json が含まれなくなり、今後これらのファイルによる競合に悩まされることがなくなります。

Discussion