3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Obsidian Gitの設定で迷子になったので、設定項目の意味を調べ直した

Posted at

はじめに

Obsidian Gitは、ObsidianのVaultをGitでバックアップできる便利なプラグインです。
自分はPCとiPhoneでVaultを同期しているんですが、ある日conflictが発生。調べてみるとauto commit-and-syncが意図通りに動いておらず、片方の変更がpushされないまま放置されていました。
設定を見直そうと設定画面を開いたものの、項目が多い上に相互依存していて正直かなり混乱しました。本記事では、一つずつ検証した結果をまとめています。

とりあえず動かしたい人向けの推奨設定

細かい話の前に、「とりあえずシンプルに自動バックアップしたい」という場合の設定を載せておきます。

Automaticセクション

設定
Split timers for automatic commit and sync OFF
Auto commit-and-sync interval 5
Auto commit-and-sync after stopping file edits OFF
Auto commit-and-sync after latest commit OFF(または ON)

Commit-and-syncセクション

設定
Push on commit-and-sync ON
Pull on commit-and-sync ON

Pullセクション

設定
Pull on startup ON

これで、5分ごと(または編集停止から5分後)に自動的にcommit→pull→pushが走ります。
なんでこの設定なのか、という部分は以下で詳しく解説していきます。

設定の全体像

Obsidian Gitの自動バックアップ設定は、大きく2つのセクションに分かれています。

  1. Automaticセクション: タイマーの設定(いつ実行するか)
  2. Commit-and-syncセクション: commit-and-syncの動作内容(何を実行するか)

この2つが連携して動くので、片方だけ見ても「結局何が起きるの?」が分かりづらく個人的に一番の混乱ポイントだったと思います。

Commit-and-sync とは

まず押さえておきたいのが、commit-and-syncが何をするのかです。以下の4つの動作をまとめて処理する単位のことを指します。また、pushとpullについてはONとOFFができるため、commit-and-syncに含まない設定ができます。

動作例
Commit-and-sync の動作:
staging → committing → pulling → pushing

Push/Pullの設定による動作の違い

Push on commit-and-sync Pull on commit-and-sync 実際の動作
ON ON staging → commit → pull → push
ON OFF staging → commit → push
OFF ON staging → commit → pull
OFF OFF staging → commit のみ

Split timers for automatic commit and sync

Obsidian Gitの同期をするうえで一番重要な設定です。こちらを理解することで応用が利くと思います。
このセクションではcommit-and-syncをどのように定期実行するかを設定します。

Split timers OFF の場合

設定項目 説明
Auto commit-and-sync interval X分ごとにcommit-and-syncを一括実行
Auto commit-and-sync after stopping file edits ファイル編集停止後に実行
Auto commit-and-sync after latest commit 最新コミットを基準にタイマーリセット

commit、push、pullがcommit-and-syncという1つの処理にまとめられて、1つのタイマーで管理されます。

ただし、pullだけは独立したタイマーで動かすことも可能です。複数デバイスで同期している場合、「commit-and-syncの間隔より短い間隔でpullしたい」というケースに対応できます。

Split timers ON の場合

設定項目 説明
Auto commit interval X分ごとにcommitを実行
Auto push interval X分ごとにpushを実行
Auto pull interval X分ごとにpullを実行
Auto commit after stopping file edits ファイル編集停止後にcommit
Auto commit after latest commit 最新コミットを基準にタイマーリセット

commit、push、pullがそれぞれ独立したタイマーで管理されます。
そのため、commit-and-syncでpushを無効化していたとしても、pushのintervalが0出ない限り、自動で実行されます。

どちらを使うべきか

用途 推奨設定
シンプルに自動バックアップしたい Split timers OFF
commit頻度とpush頻度を変えたい Split timers ON

正直、commitとpushの頻度を分けたいケースってあまりないと思うので、ほとんどの場合はSplit timers OFFで十分です。

自動コミットの追加オプション

Obsidian Gitには、自動コミットの挙動を調整する2つのオプションがあります。

どちらもOFFのままでも自動コミットは普通に動きます。 挙動を細かく制御したい場合に使う設定です。

設定 概要
Auto commit-and-sync after stopping file edits ファイル編集中は自動コミットを止め、編集が止まったらコミット
Auto commit-and-sync after latest commit 手動コミット後の自動コミット頻度を減らす

ちなみに、この2つは同時にONにはできません。どちらか一方を選ぶ形になります。

Auto commit-and-sync after stopping file edits

ファイル編集が停止してからinterval分後にcommit-and-syncを実行する設定です。Auto commit-and-sync intervalが 0 以外のときに動作します。

動作フロー

ファイルを編集中
    ↓
編集を停止(キー入力なし、別ファイルに移動など)
    ↓
interval分間待機(例: 5分)
    ↓
その間に編集がなければ
    ↓
commit-and-sync 実行

私の見落としかもしれませんが、.obsidianフォルダ以下の設定ファイル(プラグインの設定など)をObsidianの設定画面経由で変更した場合、「editsがstopした」と判定されないようです。つまり、設定を変更してもcommit-and-syncが走らない可能性があります。

Auto commit-and-sync after latest commit

手動コミットを行った際に、自動コミットの頻度を減らすための設定です。

動作フロー (interval = 5分の場合)

00:00 自動commit-and-sync
02:00 手動でcommit ← ここでタイマーがリセットされる
07:00 自動commit-and-sync(02:00から5分経過)

手動コミットを行うと、そのタイムスタンプが「最後の自動コミット時刻」として記録されます。 結果として、手動コミットからinterval分後まで自動コミットが延期される仕組みですね。

どのオプションを選ぶべきか

設定 向いているケース
両方OFF シンプルにinterval間隔で自動コミットしたい
after stopping file edits ノート編集中は自動コミットに中断されたくない
after latest commit 手動コミット直後の無駄な自動コミットを避けたい

個人的には両方OFFafter latest commitをONにする運用をおすすめします。

after stopping file editsは、さっき書いたように.obsidianフォルダの変更を検知できないという落とし穴があります。設定ファイルの同期漏れでconflictが発生するリスクを考えると、この設定は使わずにintervalベースで確実にcommitする方が安全だと思います。

まとめ

Obsidian Gitの設定は複雑ですが、以下のポイントを押さえると理解しやすくなります。

  1. Split timersのON/OFFで設定画面の構成が変わる
  2. commit-and-syncの動作内容は別セクションで定義されている
  3. after stopping file editsafter latest commitはオプション(両方OFFでも動くし、同時ONは不可)
  4. after stopping file edits.obsidianフォルダの変更を検知できない

シンプルに使いたい場合は、Split timers OFFでintervalを5分程度に設定するだけで十分です。追加オプションは両方OFFのままで問題ありません。

私の場合、after stopping file editsの落とし穴に気づかず、設定ファイルの同期漏れでconflictが発生していました。今回の見直しで原因を特定できて、やっとスッキリしました。同じ悩みを持つ方の参考になれば嬉しいです。

JISOUのメンバー募集中!

プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
日本一のアウトプットコミュニティでキャリアアップしませんか?
興味のある方は、ぜひホームページをのぞいてみてください!
▼▼▼
https://projisou.jp

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?