Obsidian Git連携による究極の自動バックアップ&同期術
はじめに:なぜObsidianとGitを連携させるのか?
デジタルノートテイキングの分野で人気を博しているMarkdownベースの知識管理ツール、Obsidian。ローカルで動作し、ファイル形式がプレーンテキストであるMarkdownのため、データへの永続的なアクセスと柔軟性が大きな魅力です。しかし、そのローカルであるという性質上、データのバックアップと複数のデバイス間での同期が課題となることがあります。
公式の同期サービスであるObsidian Syncは非常に便利ですが、有料プランであるため、コストを抑えたいと考えるユーザーも少なくありません。また、バックアップという観点では、単なるファイルコピーだけでなく、変更履歴を細かく管理したいというニーズもあります。
そこで登場するのが、バージョン管理システムのデファクトスタンダードであるGitです。Gitは、ソフトウェア開発の現場でコードの変更履歴を管理し、複数人での共同作業を効率化するために広く使われています。このGitをObsidianのノート管理に応用することで、以下の強力なメリットを享受できます。
- 自動バックアップ: ノートへの変更を検知して自動的にコミット(変更の記録)し、リモートリポジトリ(GitHubやGitLabなど)へプッシュすることで、安全な場所にバックアップを作成できます。ローカルストレージの故障や誤操作によるデータ損失のリスクを大幅に軽減できます。
- 変更履歴管理: ノートの編集過程がGitのコミットとして詳細に記録されます。これにより、「あの時のバージョンに戻したい」「この部分をいつ変更したか知りたい」といったニーズに応えられます。
- 複数デバイスでの同期: リモートリポジトリを介して、デスクトップPC、ノートPC、スマートフォンなど、複数のデバイス間でObsidianのVault(ノートの集まり)を同期できます。どのデバイスからでも最新のノートにアクセスし、編集することが可能になります。
- 無料(多くの場合): GitHubやGitLabなどの無料プランで提供されるプライベートリポジトリを利用すれば、追加コストなしでこれらの機能を実現できます(容量などの制限はあります)。
- オフラインでの作業: Gitは分散型バージョン管理システムです。オフライン環境でもローカルでの変更履歴の記録(コミット)が可能で、ネットワークに接続された際にリモートリポジトリと同期できます。
- 柔軟性: コマンドラインを使えば、より高度なバージョン管理操作(ブランチ作成、マージ、cherry-pickなど)も可能です。
本記事では、Obsidianのコミュニティプラグイン「Obsidian Git」を利用して、これらの自動バックアップと同期を効率的に行う方法について、詳細かつ網羅的に解説します。対象読者は、Obsidianユーザーであり、Gitに馴染みがない方、あるいはGitの基本的な使い方は知っているがObsidianとの連携方法を知りたい方です。
さあ、ObsidianのノートをGitで管理し、安全で柔軟なデジタルワークフローを構築しましょう。
ObsidianとGitの基礎知識
連携方法に入る前に、ObsidianとGitについて簡単に理解しておきましょう。
Obsidianとは?
Obsidianは、Markdown形式のプレーンテキストファイルを用いてローカルで動作する、パーソナルナレッジマネジメント(PKM)ツールです。特徴は、ノート間のリンクを重視した「思考のネットワーク」を構築できる点、豊富なコミュニティプラグインによる高い拡張性、そしてファイルがローカルに保存されるためベンダーロックインの心配がない点です。
Obsidianで作成するノートの集まりは「Vault(保管庫)」と呼ばれます。このVaultは、単なるフォルダ構造としてファイルシステム上に存在します。Obsidian Gitプラグインは、このVaultフォルダ全体をGitリポジトリとして扱うことで、バージョン管理と同期を実現します。
Gitとは?
Gitは、リーナス・トーバルズ氏(Linuxの開発者)によって開発された、分散型バージョン管理システムです。ソフトウェア開発の文脈でよく使われますが、テキストファイルやその他のファイルであればどんな種類のファイルでもバージョン管理できます。
Gitの基本的な概念は以下の通りです。
- リポジトリ (Repository): プロジェクトのファイル群と、その変更履歴をすべて含む場所です。ローカルマシン上にあるものを「ローカルリポジトリ」、ネットワーク上のサーバーにあるものを「リモートリポジトリ」と呼びます。
- コミット (Commit): ファイルへの一連の変更を一つのまとまりとして記録する操作です。各コミットには、誰が、いつ、どのような変更を行ったかの情報(コミットメッセージ)が含まれます。
- ブランチ (Branch): 開発の流れを分岐させるための機能です。通常、メインの開発ラインを
main
(またはmaster
)ブランチとし、新しい機能開発やバグ修正は別のブランチを作成して行います。Obsidianのノート管理では、通常一つのブランチ(例:main
)のみを使用することが多いですが、一時的な編集や実験のためにブランチを使うことも可能です。 - プッシュ (Push): ローカルリポジトリで行ったコミットを、リモートリポジトリに送信する操作です。これにより、リモートに最新の変更が反映され、バックアップや他のデバイスとの同期が可能になります。
- プル (Pull): リモートリポジトリで行われた変更を、ローカルリポジトリに取り込む操作です。他のデバイスで編集した内容を自分のローカル環境に反映させる際に使用します。
- クローン (Clone): リモートリポジトリの内容を、新しくローカルリポジトリとしてコピーする操作です。新しいデバイスで既存のVaultをセットアップする際に使います。
- コンフリクト (Conflict): 複数の人が同じファイルの同じ箇所を同時に変更し、Gitがどちらの変更を採用すべきか自動的に判断できない場合に発生する状態です。手動での解消が必要です。
Gitを使うことで、Obsidianのノートファイルをこれらの概念で管理できるようになります。ファイルが変更されるたびにコミットを作成し、定期的にリモートリポジトリにプッシュすることで、堅牢なバックアップシステムが構築できます。
前提条件の準備
ObsidianとGit連携を設定するために、以下の準備が必要です。
- Obsidianのインストール:
- まだインストールしていない場合は、Obsidianの公式サイト(https://obsidian.md/)から使用しているOSに対応したバージョンをダウンロードし、インストールしてください。
- Gitのインストール:
- Gitがシステムにインストールされている必要があります。多くのOSにはプリインストールされているか、簡単なコマンドでインストールできます。
- Windows: Git for Windows (https://gitforwindows.org/) からインストーラーをダウンロードして実行します。インストール中に設定オプションが多く表示されますが、特別な理由がなければデフォルト設定で問題ありません。
- macOS: Homebrewを使用するのが一般的です。ターミナルを開き、
brew install git
を実行します。Homebrewがインストールされていない場合は、まずHomebrewのインストールが必要です(https://brew.sh/index_ja)。macOSのDeveloper Toolsをインストールしている場合、Gitが既に含まれていることもあります。ターミナルでgit --version
を実行して確認できます。 - Linux: 各ディストリビューションのパッケージマネージャーを使用します。例えば、Debian/Ubuntuなら
sudo apt update && sudo apt install git
、Fedoraならsudo dnf install git
、Arch Linuxならsudo pacman -S git
などです。
- インストール後、ターミナルやコマンドプロンプトを開き、
git --version
と入力してEnterキーを押し、バージョン情報が表示されるか確認してください。 - Gitの初期設定として、ユーザー名とメールアドレスを設定しておくと良いでしょう。これはコミット時に誰が変更したかを記録するために使われます。
bash
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
“Your Name”と”[email protected]”はご自身の情報に置き換えてください。
- Gitがシステムにインストールされている必要があります。多くのOSにはプリインストールされているか、簡単なコマンドでインストールできます。
- リモートリポジトリサービスの利用:
- バックアップ先となるリモートリポジトリを提供しているサービスのアカウントが必要です。人気のあるサービスは以下の通りです。
- GitHub: 無料でプライベートリポジトリを作成できます(一定の容量制限あり)。世界中で最も利用されているサービスです。https://github.com/
- GitLab: 無料でプライベートリポジトリを作成でき、CI/CDなどの機能も充実しています。https://gitlab.com/
- Bitbucket: 以前は無料枠が特徴的でしたが、GitHubやGitLabの無料枠拡充により差異は小さくなっています。Atlassian製品との連携がスムーズです。https://bitbucket.org/
- ここでは、GitHubを例に説明を進めますが、他のサービスでも基本的な手順は同じです。いずれかのサービスでアカウントを作成しておいてください。
- バックアップ先となるリモートリポジトリを提供しているサービスのアカウントが必要です。人気のあるサービスは以下の通りです。
- Obsidian Vaultの準備:
- バックアップ・同期したいObsidianのVaultを準備しておいてください。新しいVaultでも既存のVaultでも構いません。
これらの準備が整ったら、次のステップに進みます。
Obsidian Gitプラグインの導入
自動バックアップと同期の核心となるのが、Obsidianのコミュニティプラグイン「Obsidian Git」です。このプラグインは、ObsidianのインターフェースからGit操作(コミット、プッシュ、プルなど)を実行できるようにし、さらにこれらの操作を自動化する機能を提供します。
プラグインのインストール手順
- Obsidianを開きます。
- 左下の設定(歯車アイコン)をクリックします。
- サイドバーの「コミュニティプラグイン」を選択します。
- 「制限付きモード」がオンになっている場合は、オフにして「コミュニティプラグインを有効にする」をクリックします。
- 「コミュニティプラグイン」の設定画面で、「参照」ボタンをクリックします。
- 検索バーに「Obsidian Git」と入力します。
- 検索結果に表示された「Obsidian Git」プラグインを選択します。
- プラグインの詳細画面が表示されるので、「インストール」ボタンをクリックします。
- インストールが完了したら、ボタンが「有効にする」に変わりますので、クリックしてプラグインを有効にします。
これでObsidian GitプラグインがObsidianに組み込まれました。設定画面のコミュニティプラグインリストに「Obsidian Git」が表示され、右側のトグルがオンになっていることを確認してください。
リモートリポジトリの準備(GitHubを例に)
次に、バックアップ先となるリモートリポジトリをGitHub上に作成します。
- GitHubのウェブサイトにアクセスし、サインインします。
- 画面右上のプラスアイコン(
+
)をクリックし、「New repository」を選択します。 - 新しいリポジトリ作成画面が表示されます。
- Owner: あなたのGitHubユーザー名が表示されます。
- Repository name: リポジトリの名前を付けます。例えば
Obsidian-Notes
やMy-Vault
など、ObsidianのVaultであることを示す分かりやすい名前が良いでしょう。この名前はリモートリポジトリのURLの一部になります。 - Description (Optional): リポジトリの説明を入力します。
- Public/Private: 重要です。Obsidian Vaultには個人的な情報や機密性の高い情報が含まれる可能性があります。そのため、通常はPrivateを選択してください。Publicにすると、インターネット上の誰でもあなたのノートを閲覧できるようになります。
- Initialize this repository with:
Add a README file
: チェックを入れても入れなくても構いません。後から追加・削除できます。Add .gitignore
: Gitを使う上で重要なファイルですが、Obsidian Vaultに特化した内容は手動で設定するため、ここでは「None」を選択しておいてください。後ほどObsidianのキャッシュファイルなどを無視するための.gitignore
ファイルを作成します。Choose a license
: 必要ありません。
- 設定が完了したら、「Create repository」ボタンをクリックします。
これでリモートリポジトリが作成されました。作成されたリポジトリのページに移動します。このページに表示されているリポジトリのURL(HTTPSまたはSSH)を控えておきます。
- HTTPS:
https://github.com/your_username/your_repository_name.git
の形式です。Obsidian Gitプラグインからプッシュ/プルする際に、GitHubのユーザー名とパスワード(またはPersonal Access Token)での認証が必要になります。 - SSH:
[email protected]:your_username/your_repository_name.git
の形式です。SSHキーを使った認証が必要です。HTTPS認証よりも安全で、パスワード入力を省略できるため推奨されますが、SSHキーの生成とGitHubへの登録という追加手順が必要です。本記事では、まずHTTPSでの設定方法を中心に説明し、SSHについても後述します。
リモートリポジトリのURL(HTTPS)をコピーしておいてください。
ローカルリポジトリの初期設定
次に、ObsidianのVaultフォルダをGitのローカルリポジトリとして初期化し、先ほど作成したリモートリポジトリと関連付けます。これにはいくつかの方法がありますが、コマンドラインを使うのが最も確実です。
コマンドラインを使ったローカルリポジトリの初期化と関連付け
- Obsidianの設定画面を開き、サイドバー一番上の「Vault」を選択します。
- 「Vault folder」のパスを確認します。このパスがObsidianのVaultフォルダの場所です。
- Obsidianを閉じます。Git操作中はObsidianを閉じておくか、少なくともVaultフォルダを開いていない状態にするのが安全です。
- 使用しているOSのターミナルまたはコマンドプロンプトを開きます。
cd
コマンドを使って、先ほど確認したVaultフォルダのパスに移動します。
例:cd /path/to/your/obsidian/vault
- Gitリポジトリを初期化します。
bash
git init
これにより、Vaultフォルダ内に隠しフォルダ.git
が作成され、このフォルダがローカルリポジトリとして認識されるようになります。 .gitignore
ファイルを作成します。このファイルにリストされたファイルやフォルダはGitの管理対象から除外されます。Obsidianは.obsidian/workspace
のようなキャッシュファイルや設定ファイルを生成しますが、これらは通常Gitで管理する必要はありません。Vaultフォルダのルートディレクトリに.gitignore
という名前のテキストファイルを作成し、以下の内容を記述します。
gitignore
.obsidian/workspace*
.obsidian/usage.json
.obsidian/appearance.json
.obsidian/community-plugins.json
.obsidian/core-plugins.json
.obsidian/themes/
.obsidian/snippets/
.obsidian/plugins/*/data.json
.obsidian/plugins/*/main.js
.obsidian/plugins/*/manifest.json
.obsidian/plugins/*/styles.css
.obsidian/graph.json
.obsidian/internal-link-config.json
.obsidian/publish.json
.obsidian/backups/
.DS_Store # macOSの場合
Thumbs.db # Windowsの場合
*.swp # Vimスワップファイルなど
*.tmp
*~
*.obsidian/plugins/*/data.json
のようにプラグインの設定ファイルはバックアップしたい場合もあるかもしれません。その場合はその行を削除するかコメントアウトしてください。上記の例は、プラグインのコードやテーマ、グラフ情報、ワークスペースの状態など、Gitで管理する必要性の低いものを無視する設定です。必要に応じて内容を調整してください。- Vault内のすべてのファイル(
.gitignore
で無視されたものを除く)をステージングエリアに追加します。
bash
git add .
.
は現在のディレクトリ(Vaultフォルダ)全体を意味します。 - 変更をコミットします。これが最初のコミットになります。
bash
git commit -m "Initial commit of Obsidian vault"
-m
オプションの後ろの文字列がコミットメッセージです。変更内容が分かりやすいメッセージをつけましょう。 - ローカルリポジトリとリモートリポジトリを関連付けます。先ほどGitHubで作成したリポジトリのURL(HTTPS)を使用します。
bash
git remote add origin <リモートリポジトリのHTTPS URL>
<リモートリポジトリのHTTPS URL>
の部分は、あなたのリポジトリのURLに置き換えてください。origin
はリモートリポジトリに付けられる慣習的な名前です。 - ローカルリポジトリの内容をリモートリポジトリにプッシュします。
bash
git push -u origin mainpush
: ローカルの変更をリモートに送るコマンドです。-u origin main
: ローカルのmain
ブランチとリモートのorigin
リポジトリのmain
ブランチを関連付け(アップストリーム設定)ます。これにより、次回以降は単にgit push
と入力するだけでorigin main
にプッシュできるようになります。Gitの初期ブランチ名がmaster
の場合はgit push -u origin master
とします。- HTTPS URLを使っている場合、このコマンドを実行するとGitHubのユーザー名とパスワード(またはPersonal Access Token)を求められることがあります。パスワード認証は非推奨になってきているため、Personal Access Tokenの使用を検討してください。GitHubのSettings > Developer settings > Personal access tokensから発行できます。
これで、Obsidian Vaultの初期状態がGitHubのリモートリポジトリにプッシュされ、最初のバックアップが完了しました。GitHubのウェブサイトでリポジトリの内容を確認してみてください。Obsidian Vaultのファイルやフォルダがアップロードされているはずです(.gitignore
で指定したファイルやフォルダは除く)。
Obsidian Gitプラグインの詳細設定
ローカルリポジトリの設定が完了したら、Obsidian Gitプラグインの設定を行います。Obsidianを開き、設定画面のコミュニティプラグインリストから「Obsidian Git」を選択します。
設定項目は多岐にわたりますが、自動バックアップと同期に不可欠な主要項目を見ていきましょう。
General settings (一般設定)
- Vault base path: Vaultのルートパスです。通常は自動的に検出されますが、異なる場合は手動で設定します。
- Git path: システムにインストールされているGit実行ファイルのパスです。自動検出されることが多いですが、Gitが認識されない場合は、
which git
(macOS/Linux) やwhere git
(Windows) コマンドでパスを調べて設定してください。
Automatic commiting (自動コミット)
Obsidianでのファイル変更を検知して、自動的にGitコミットを作成する設定です。バックアップの中核となる機能です。
- Vault backup interval (minutes): ここに設定した時間(分)ごとに、変更があれば自動的にコミットを実行します。例えば
15
と設定すると、15分ごとに変更がないかチェックし、変更があればコミットします。0
に設定すると、アイドル時自動コミット以外の時間ベースの自動コミットは無効になります。 - Automatic commit on file changes: ファイルの変更が保存された際に即座にコミットするかどうかを設定します。これをオンにしておくと、変更の度に細かくコミットが作成されます。バックアップの頻度を上げたい場合に有効です。
- Commit message: 自動コミットに使用されるコミットメッセージのテンプレートです。デフォルトは
vault backup: {{date}} {{time}}
のように、日付と時刻が埋め込まれます。必要に応じて変更できます。
Automatic push (自動プッシュ)
ローカルでのコミットを、リモートリポジトリに自動的にプッシュする設定です。リモートへのバックアップや、他のデバイスとの同期に必要です。
- Push changes on boot: Obsidian起動時に保留中のローカルコミットを自動的にプッシュします。
- Push changes on close: Obsidian終了時に保留中のローカルコミットを自動的にプッシュします。
- Disable push: プッシュを完全に無効にします。手動でプッシュする場合にオンにします。
- Disable push notification: 自動プッシュが成功した際の通知を非表示にします。
- Push interval (minutes): 自動コミットによってローカルに新しいコミットが作成された後、ここで設定した時間(分)が経過したら自動的にプッシュします。
0
に設定すると、コミット後即座にプッシュされます。リアルタイムに近い同期を望むなら0
が良いでしょう。ただし、ネットワークが不安定な環境では、少し間隔を置く設定も有効です。 - Push on auto commit: 自動コミットが成功した際に、即座にプッシュを実行するかどうか。上記の「Push interval」よりも優先されます。オンにすると、自動コミットの直後にプッシュが試行されます。
Automatic pull (自動プル)
リモートリポジトリの変更をローカルリポジトリに自動的に取り込む設定です。他のデバイスで加えた変更を現在のデバイスに反映させるために必要です。
- Pull changes on boot: Obsidian起動時にリモートから自動的にプルします。他のデバイスで変更を加えてからしばらくぶりにObsidianを開いた場合などに便利です。
- Pull interval (minutes): ここに設定した時間(分)ごとに、リモートに変更がないかチェックし、変更があれば自動的にプルします。複数のデバイスで同時に作業する可能性がある場合や、常に最新の状態を保ちたい場合に有効です。ただし、頻繁なプルはコンフリクトの可能性を高めることもあります。
- Disable pull notification: 自動プルが成功した際の通知を非表示にします。
- Display pull message on status bar: プル操作の状態(成功、失敗など)をステータスバーに表示します。
- Merge on pull: プル時にリモートの変更を自動的にローカルブランチにマージするかどうか。通常はオンにしておきます。オフの場合、プルはローカルの変更をフェッチするだけで、マージは手動で行う必要があります。
- Commit message for merge: 自動マージが行われた際のコミットメッセージのテンプレート。
- Conflict resolution: 自動プルでコンフリクトが発生した場合の挙動を設定します。
Manual
: コンフリクトしたファイルをObsidianで開き、手動で解消するようユーザーに求めます(推奨)。Theirs
: リモートの変更を無条件に採用し、ローカルの変更を破棄します。Yours
: ローカルの変更を無条件に採用し、リモートの変更を破棄します。- 通常は「Manual」を選択しておき、コンフリクトが発生した際は自身で状況を確認し、適切に解消するのが最も安全です。
- Fetch changes before pull: プルする前にリモートの変更をフェッチ(取得するがマージしない)するかどうか。オンにしておくと、リモートの最新状態を確認してからプルに移れるため、若干丁寧なワークフローになります。通常はオンで問題ありません。
Authentication (認証)
Gitがリモートリポジトリにアクセスする際の認証方法を設定します。
- Use SSH Agent: SSHキーを使った認証を行う場合にオンにします。SSHキーを生成し、公開鍵をGitHubなどのリモートサービスに登録する必要があります。SSHキー認証はパスワード入力を省略でき、安全性が高いため推奨されます。
- SSHキーの設定手順(概要):
- ターミナルを開き、
ssh-keygen -t rsa -b 4096 -C "[email protected]"
のようなコマンドでSSHキーペアを生成します。 - 生成された公開鍵ファイル(通常
~/.ssh/id_rsa.pub
)の内容をコピーします。 - GitHubなどのリモートサービスのウェブサイトにログインし、Settings > SSH and GPG keys のような項目で新しいSSHキーを追加し、公開鍵の内容を貼り付けます。
- 秘密鍵(通常
~/.ssh/id_rsa
)が適切に管理されていることを確認します。SSHエージェントが起動している状態で、Obsidian Gitプラグインの「Use SSH Agent」をオンにします。
- ターミナルを開き、
- SSHキーのセットアップはOSや環境によって詳細が異なるため、必要に応じて各サービスの公式ドキュメントなどを参照してください。
- SSHキーの設定手順(概要):
- Username: HTTPS認証を使用する場合のユーザー名(通常はリモートサービスのユーザー名)。
- Password: HTTPS認証を使用する場合のパスワードまたはPersonal Access Token。セキュリティ上の理由から、Personal Access Token(PAT)の使用が強く推奨されます。GitHubのPATは、GitHubのSettings > Developer settings > Personal access tokensで発行できます。PATにはリポジトリへのアクセス権限(
repo
スコープ)を与える必要があります。 - Use credential helper: GitのCredential Helper機能を利用して、認証情報を安全に保存し、再入力の手間を省くかどうか。オンにしておくと便利です。Gitのインストール時に設定されていることが多い機能です。
Other settings (その他の設定)
- Branch to backup on: バックアップに使用するローカルブランチとリモートブランチ。通常は
main
またはmaster
を設定します。 - Run prune on push/pull: プッシュやプル時にリモートから削除されたブランチやオブジェクトをローカルからも削除するかどうか。リポジトリを整理するために有効です。
- Run gc on push/pull: プッシュやプル時にGitのガベージコレクションを実行するかどうか。リポジトリの最適化と容量削減に役立ちますが、頻繁に行うとパフォーマンスに影響する可能性があります。
- Run fetch –all: プルする前にすべてのリモートブランチの情報をフェッチするかどうか。
- Disable update to upstream: プル後にローカルブランチのHEADをリモート追跡ブランチに追従させない設定。特殊な場合を除きオフのままで良いでしょう。
- Log level: プラグインのログ出力レベルを設定します。問題が発生した場合にデバッグ情報を確認するのに役立ちます。
- Disable notifications: すべてのプラグイン通知を無効にします。
- Hide status bar: ステータスバーに表示されるObsidian Gitの情報を非表示にします。
おすすめの自動同期設定例
リアルタイムに近い自動バックアップと同期を実現するための設定例です。
- Automatic commiting:
- Vault backup interval:
0
- Automatic commit on file changes: オン
- Vault backup interval:
- Automatic push:
- Push changes on boot: オン
- Push changes on close: オン
- Push interval (minutes):
0
- Push on auto commit: オン
- Automatic pull:
- Pull changes on boot: オン
- Pull interval (minutes):
5
(または10など、頻繁すぎるとコンフリクトの可能性増加) - Conflict resolution: Manual
この設定では、ファイルの変更があればすぐにコミットされ、そのコミットがすぐにリモートにプッシュされます。これにより、ほぼリアルタイムでリモートリポジトリが最新の状態に保たれます。プルは5分ごとに行われるため、他のデバイスでの変更も比較的速やかに反映されます。
ただし、この設定は頻繁なGit操作を伴うため、マシンの負荷やバッテリー消費に影響する可能性があります。また、ネットワークが不安定な環境ではプッシュ/プルが頻繁に失敗する可能性もあります。使用状況に応じて間隔を調整してください。例えば、ノートPCでバッテリー駆動が多い場合は、自動コミット/プッシュの間隔を長くする、あるいは手動プッシュ/プルを基本とするなどの選択肢もあります。
複数のデバイスでの同期
リモートリポジトリにVaultの内容がプッシュされていれば、他のデバイスからそのリポジトリをクローンすることで、ObsidianのVaultを同期させることができます。
別のデバイスでのセットアップ手順
- 新しいデバイスにObsidianとGitをインストールします(「前提条件」参照)。
- ターミナルまたはコマンドプロンプトを開きます。
- Vaultを配置したい親フォルダに移動します。例:
cd Documents
- リモートリポジトリをクローンします。GitHubのリポジトリURL(HTTPSまたはSSH)を使用します。
bash
git clone <リモートリポジトリのURL>
例:git clone https://github.com/your_username/your_repository_name.git
これにより、親フォルダ内にリモートリポジトリ名と同じ名前のフォルダが作成され、Vaultの内容がダウンロードされます。 - Obsidianを開きます。
- 「Open another vault」または「Open folder as vault」を選択します。
- 先ほどクローンしたフォルダ(例:
your_repository_name
)を選択し、Vaultとして開きます。
これで、新しいデバイスで既存のVaultにアクセスできるようになりました。
複数デバイスでの作業ワークフローと同期
複数のデバイスで同じVaultを使用する場合、Gitを使った同期は以下のワークフローが基本となります。
- 編集開始前: 作業を開始する前に、Obsidian Gitプラグインを使ってプルを実行します。これにより、他のデバイスで行われた最新の変更を自分のローカル環境に取り込み、コンフリクトを防ぐことができます。ObsidianのステータスバーにGitアイコンがあればそれをクリックするか、コマンドパレット(Ctrl/Cmd+P)から「Obsidian Git: Pull」を選択してプルします。
- 編集後または作業終了時: 変更をリモートに反映させるために、プッシュを実行します。Obsidian Gitの設定で自動コミット/プッシュが有効になっていれば、この操作は自動的に行われます。手動で行う場合は、ステータスバーのGitアイコンをクリックするか、コマンドパレットから「Obsidian Git: Commit all changes」でコミットし、「Obsidian Git: Push」でプッシュします。
自動同期設定(自動プル&自動プッシュ)を活用する場合:
Obsidian Gitの設定で自動プルと自動プッシュを有効にしている場合、これらの操作はバックグラウンドで自動的に行われます。ユーザーは意識することなく、比較的最新の状態が保たれます。
ただし、自動同期が有効でも、デバイスを切り替える際や、しばらくぶりにObsidianを開いた際には、念のため手動でプルを実行することをお勧めします。これは、自動プルの間隔やネットワークの遅延によって、リモートリポジトリが必ずしも完全に最新の状態でない可能性があるためです。
コンフリクトへの対処:
複数のデバイスで同じファイルの同じ箇所をほぼ同時に変更し、リモートにプッシュ/プルしようとした際にコンフリクトが発生することがあります。
Obsidian Gitプラグインで「Conflict resolution」を「Manual」に設定している場合、コンフリクトが発生するとObsidian内でコンフリクトが発生したファイルが開かれ、Gitのコンフリクトマーカー(<<<<<<<
, =======
, >>>>>>>
など)が表示されます。
コンフリクトマーカーを確認し、どちらの変更を採用するか、あるいは両方の変更を組み合わせて、最終的なファイル内容を手動で編集します。編集が終わったら、コンフリクトマーカーをすべて削除し、ファイルを保存します。
その後、Obsidian Gitプラグインを使ってコミットし、リモートにプッシュします。これによりコンフリクトが解消された状態がリモートに反映されます。
コンフリクト解消はGitの基本的な操作であり、テキストエディタ上で行うため、MarkdownファイルであるObsidianのノートでは比較的容易です。
トラブルシューティング
Obsidian Git連携を設定・使用する上で遭遇しやすいトラブルとその対処法について説明します。
プッシュ/プルができない
- 認証エラー:
- HTTPS認証: ユーザー名やパスワード(またはPAT)が間違っている可能性があります。リモートサービス(GitHubなど)で正しい情報を確認してください。GitHubではパスワード認証が非推奨になり、PATの使用が必須になりました。PATが正しく設定されているか、期限が切れていないか確認してください。
- SSH認証: SSHキーペアが正しく生成されているか、公開鍵がリモートサービスに登録されているか、秘密鍵が保護されているか、SSHエージェントが実行されているか確認してください。ターミナルで
ssh -T [email protected]
のようにテスト接続を試みると、原因特定に役立ちます。
- リモートリポジトリが存在しない: クローンやプッシュ/プルの際に指定したリモートリポジトリのURLが間違っているか、リポジトリが削除されている可能性があります。URLを確認してください。
- 権限がない: 指定したリモートリポジトリへのアクセス権限(読み取り/書き込み)がない可能性があります。リポジトリの所有者に確認してください。
- ネットワークエラー: インターネット接続が不安定であるか、ファイアウォールなどによってGitの通信がブロックされている可能性があります。ネットワーク環境を確認してください。
- リモートにローカルにない変更がある(プッシュ時): プッシュしようとしているローカルコミットの元となったリモートのコミット以降に、他のデバイスなどで変更が加えられている場合、プッシュが拒否されます。この場合は、まずプルを実行してリモートの変更を取り込み、必要であればコンフリクトを解消してから再度プッシュを試みてください。
コンフリクトが発生した
- 「複数のデバイスでの同期」セクションの「コンフリクトへの対処」で説明した手順に従って、手動でコンフリクトを解消してください。ファイル内のGitマーカーをすべて削除し、最終的な内容を確定してからコミット・プッシュします。
- コンフリクトが頻繁に発生する場合は、自動プッシュ/プルの間隔を調整したり、手動での同期タイミングを意識したりすることで発生頻度を減らせます。特に、異なるデバイスで同時に同じファイルを編集する際は注意が必要です。
.gitignore
が効かない
.gitignore
ファイルがVaultフォルダのルートディレクトリに正しく配置されているか確認してください。.gitignore
ファイルの名前が.gitignore
であることを確認してください(拡張子は不要)。.gitignore
ファイルの内容が正しいか確認してください。無視したいファイルやフォルダへのパスが正確に記述されているか確認してください。特に、パスの指定方法(相対パスなど)に注意が必要です。.gitignore
を設定する前に誤ってGitに追跡対象として追加してしまったファイルは、.gitignore
に記述しても無視されません。その場合は、以下のコマンドでGitのキャッシュから削除してから再度コミットしてください(ファイル自体は削除されません)。
bash
git rm --cached <無視したいファイルまたはフォルダのパス>
git commit -m "Remove ignored files from tracking"
git push
プラグインがうまく動作しない
- Obsidian Gitプラグインが有効になっているか確認してください。
- Obsidianを再起動してみてください。
- Obsidian Gitプラグインを一度無効にし、再度有効にしてみてください。
- Obsidian Gitプラグインを一度アンインストールし、再度インストールしてみてください。
- Obsidian Gitプラグインの設定画面で、Git実行ファイルのパスが正しく設定されているか確認してください。
- 設定画面の「Log level」を「Debug」にして、ログを確認してみてください。問題の原因を示すエラーメッセージが出力されている場合があります。
容量制限
- GitHubなどの無料プランでは、リポジトリの容量に制限がある場合があります。Obsidian Vaultが非常に大きくなった場合、容量制限に抵触する可能性があります。大きなファイル(画像、動画など)を大量にVaultに含めている場合は注意が必要です。
- 大きなファイルをGitで効率的に管理するには、Git LFS (Large File Storage) という拡張機能の利用を検討してください。ただし、Git LFSは別途設定が必要であり、利用するリモートサービスによっては有料になる場合があります。
- Vaultが容量制限に近い場合は、不要なファイルや大きなファイルを整理するか、有料プランへのアップグレードを検討してください。
より高度な利用法
Obsidian Git連携の基本的な自動バックアップ&同期に慣れてきたら、Gitのより高度な機能を使ってVaultをさらに活用できます。
ブランチを使ったワークフロー
通常、Obsidian Vaultの管理には一つのブランチ(main
など)で十分ですが、以下のようなケースでブランチが役立ちます。
- 一時的な変更や実験: あるノートを大幅に書き換えたいが、元の状態も残しておきたい場合や、新しい構造を試したい場合など。新しいブランチを作成してその中で作業し、満足いく結果になったらメインブランチにマージできます。うまくいかなければそのブランチを破棄することも容易です。
- 大きな変更の計画: Vaultの構造全体に関わる大きな変更(例: フォルダ構造の変更、ノート名の命名規則変更など)を行う前に、別のブランチで試行錯誤できます。
ブランチ操作の基本的なコマンド:
* 新しいブランチを作成して移動: git checkout -b <新しいブランチ名>
* ブランチを切り替える: git checkout <切り替えたいブランチ名>
* 現在のブランチをリモートにプッシュ: git push origin <現在のブランチ名>
* 別のブランチの変更を現在のブランチに取り込む(マージ): git merge <取り込みたいブランチ名>
(マージ後にコンフリクトが発生する可能性あり)
* ブランチを削除する: git branch -d <削除したいブランチ名>
(ローカル)、git push origin --delete <削除したいブランチ名>
(リモート)
Obsidian GitプラグインのGUIからはブランチの作成や切り替えはできません(バージョンによっては限定的な機能があるかもしれません)。これらの操作はターミナルから行う必要があります。しかし、一度目的のブランチに切り替えておけば、プラグインは自動的にそのブランチでコミット/プッシュ/プルを行います。
古いバージョンへの復元
Gitはすべての変更履歴を保持しているため、いつでも過去の任意の時点のVaultの状態に戻すことができます。
- 復元したい時点のコミットハッシュ(またはタグ名)を特定します。ターミナルで
git log
コマンドを実行すると、コミット履歴とそれぞれのハッシュが表示されます。Obsidian Gitプラグインのログ表示機能や、GitHubなどのウェブサイトでもコミット履歴を確認できます。 - 以下のコマンドで、特定のコミット時点の状態をワークツリーに展開します。
bash
git checkout <コミットハッシュ>
これにより、Vaultフォルダの内容が指定したコミット時点の状態に戻ります。この状態は「detached HEAD」と呼ばれ、特定のコミットを一時的に見ている状態です。 - 内容を確認し、必要であればファイルをコピーするなどして、現在の作業ブランチ(例:
main
)に戻します。
bash
git checkout main - 特定のファイルだけを過去のバージョンに戻したい場合は、以下のコマンドを使用します。
bash
git checkout <コミットハッシュ> -- <ファイルパス>
例:git checkout HEAD~2 -- Notes/ImportantNote.md
(最新コミットから2つ前のコミット時点のNotes/ImportantNote.mdを復元)
これらの操作もターミナルから行う必要があります。古いバージョンへの復元は強力な機能ですが、現在の変更が失われる可能性もあるため、慎重に行ってください。復元前に現在の状態を新しいブランチとして保存しておくと安全です。
プライベートリポジトリの重要性
前述しましたが、Obsidian Vaultには個人的な情報や機密性の高い情報が含まれる可能性が非常に高いため、リモートリポジトリは必ずプライベートリポジトリとして作成してください。公開リポジトリにしてしまうと、あなたのノート内容がインターネット上に公開され、誰でも閲覧・コピーできるようになります。
Obsidian Syncとの比較
Obsidian Git連携は非常に強力で柔軟なバックアップ・同期方法ですが、Obsidian公式が提供する有料サービス「Obsidian Sync」も存在します。どちらを選ぶべきか、あるいは両方併用すべきかについて考えてみましょう。
Obsidian Syncの利点:
- 圧倒的な手軽さ: 設定画面で同期を有効にするだけで、特別な知識なしに同期が始まります。Gitのインストールやコマンドライン操作、リモートリポジトリの準備などは一切不要です。
- リアルタイム同期: ファイルの変更がほぼリアルタイムで他のデバイスに反映されます。複数デバイスでの同時編集も比較的スムーズです。
- エンドツーエンド暗号化: 同期されるデータは強力な暗号化が施され、Obsidianの開発者を含め、誰もあなたのノート内容を閲覧できません。プライバシー保護の観点で優れています。
- モバイルアプリとの連携: Obsidianの公式モバイルアプリとの連携が非常にスムーズです。
- 設定同期: Obsidian本体やプラグインの設定、テーマ、スニペットなども同期できます。
- サポート: 公式サービスであるため、問題発生時のサポートが期待できます。
Obsidian Git連携の利点:
- 無料(多くの場合): 無料のリモートリポジトリサービスを利用すれば、同期・バックアップ機能を追加コストなしで利用できます。
- オフラインでの作業に強い(Gitの分散性): ネットワーク接続がない環境でもローカルでのコミットが可能で、接続された際にまとめて同期できます。
- 詳細なバージョン管理: Gitの持つ詳細な変更履歴管理機能をフル活用できます。特定の時点への復元、変更内容の差分確認などが容易です。
- 柔軟性: コマンドラインを使えば、ブランチ管理などより高度なワークフローを構築できます。
- ベンダーロックインの心配がない: データはMarkdownファイルとしてローカルにあり、Gitリポジトリとしてリモートにも存在するため、Obsidianや特定のサービスに依存しません。
どちらを選ぶべきか、または両方併用するか:
- 手軽さとリアルタイム性を最優先するなら: Obsidian Syncが最適です。技術的な知識が不要で、設定も簡単です。
- コストを抑えたい、Gitのバージョン管理機能を活用したい、技術的な設定に抵抗がないなら: Obsidian Git連携が有力な選択肢です。
- 最高の安全性と冗長性を求めるなら: Obsidian SyncとObsidian Git連携の両方を併用するのも一つの方法です。Obsidian Syncで日常的なリアルタイム同期を行い、Obsidian Gitでさらに詳細なバージョン履歴管理と、公式サービスとは別の場所へのバックアップ(リモートリポジトリ)を確保するという使い方が考えられます。ただし、両方を使う場合は設定が複雑になり、同期の挙動に注意が必要になることもあります。
どちらの方法を選択するにしても、Obsidianのノートが安全にバックアップされ、必要な時に同期できる体制を構築することが最も重要です。
まとめ
本記事では、ObsidianとGitを連携させて自動バックアップと同期を実現する方法について、Obsidian Gitプラグインの導入から詳細設定、複数デバイスでの利用、トラブルシューティング、そしてGitの高度な活用法までを網羅的に解説しました。
Obsidianのローカルでの柔軟性と、Gitの強力なバージョン管理・分散同期機能を組み合わせることで、ノートデータを安全に保ち、どこからでもアクセスできる環境を構築できます。ファイルの変更履歴を細かく追跡できることは、単なるバックアップ以上の安心感と、ノートの進化を振り返るための貴重な手段となります。
最初はGitの概念やコマンドライン操作に戸惑うことがあるかもしれませんが、Obsidian Gitプラグインを使えば、ほとんどの日常的な操作はObsidianのインターフェース上で行え、自動化も可能です。本記事で解説した手順と設定例を参考に、ぜひご自身のObsidian VaultでGit連携を実践してみてください。
Gitの知識を深めることで、Obsidianのノート管理だけでなく、他のテキストベースのプロジェクト管理や、自身のブログ記事の管理など、様々な場面でその強力な機能を応用できるようになるでしょう。
あなたのObsidianライフが、より安全で効率的になる一助となれば幸いです。