aburi6800のブログ

コンピュータのプログラミング、ゲームに関するニッチな情報を書いていくブログです。

【Obsidian】Obsidian gitプラグイン

f:id:aburi6800:20210725005439p:plain

(2022/4/13 加筆修正しました)

Obsidian gitプラグインとは

Obsidianからgitのローカル/リモートリポジトリ操作を行えるプラグイン
予めVaultに対してgitの操作を行い、githubなどのリモートリポジトリと関連付けさせておく必要があるため、gitの知識があることが前提となりますが、利用できるのであればほぼ自動でバックアップしてくれるので便利なプラグインです。

ここでは、プラグインのドキュメント、設定画面の和訳と、具体的な利用方法を記載します。

個人的にはGoogleドライブやOne Driveなどのクラウドストレージはいつ壊れてもおかしくないと考えているので、githubに保存できるのは安心。

目次

プラグイン配布元

Obsidian gitプラグインは、以下で公開されています。

github.com

プラグインドキュメント和訳

Obsidian.mdのデータ保管庫をリモートのgitリポジトリGitHubのプライベートリポジトリなど)にバックアップするためのシンプルなプラグインです。
このプラグインは、認証情報が設定されていることを前提にしています。

git でデータ保管庫をバックアップすることの利点については、@tallguyjenks による素晴らしい記事を読むことをお勧めします。

このプラグインは現時点ではモバイルでは動作しません。更新については #57 を参照してください。

1. インストール方法

詳しい説明は、インストールガイドをご覧ください。

2. ドキュメンテーション

要件、ヒント、よくある問題などは、Wikiで確認できます。

3. 特徴

  • 保管庫の自動バックアップ(X分毎)
  • Obsidian起動時にリモートリポジトリから変更を取り込みます。
  • リモートリポジトリへの変更のプル/プッシュのためのホットキーの割り当て
  • Gitサブモジュールによる異なるリポジトリの管理

4. サイドバービュー

ソースコントロールビューでは、個々のファイルのステージングとコミットを行うことができます。
「ソースコントロールビューを開く」コマンドで開くことができます。

f:id:aburi6800:20220411000428p:plain

5. 使用可能なコマンド

  • Create Backup(バックアップを作成する): すべての変更をコミットし、バックアップ時にプッシュするかどうかの設定に応じてプッシュします。
  • Create Backup with specific message(特定のメッセージでバックアップを作成する): 上記と同じですが、カスタムメッセージを使用します。
  • Commit all changes(すべての変更をコミットする): プッシュせずに全変更のコミットのみ行います。
  • Commit all changes with specific message(特定のメッセージとともにすべての変更をコミットする): 上記と同じですが、カスタムメッセージを使用します。
  • Push(プッシュ)
  • Pull(プル)
  • List changed files(変更されたファイルを一覧表示する): すべての変更点をモーダルにリストアップします。
  • Edit remotes and Remove remote(リモートの編集とリモートの削除)
  • Initialize a new repo(新しいリポジトリを初期化する)
  • Clone an existing remote repo(既存のリモートレポジトリをクローンする)

最新バージョン(執筆時点はversion 1.24.1)では、gitの基本的な操作を行うコマンドがObsidianから実行できるようになりました。
簡単な操作だけであれば、Obsidian上で全て完結できるでしょう。

6. 連絡先

フィードバックや質問がある場合は、GitHub issues または Obsidian Discord の @evrwhr までご連絡ください。

このプラグインは denolehov が最初に開発しました。3月以降は、主にVinzent03がこのプラグインを開発しています。

もし私(Vinzent03)をサポートしたいなら、Ko-fiでサポートできます。


設定画面和訳

f:id:aburi6800:20220411000733p:plain

  • Vault backup interval (minutes)
    Commit and push changes every X minutes. Set to 0 (default) to disable. (See bellow setting for further configuration!)

    X分ごとに変更をコミットしてプッシュする。
    0(デフォルト)に設定すると無効になります。(さらに詳しい設定は下の設定を見てください!)

  • If turned on, do auto backup every X minutes after last change. Prevents auto backup while editing a file. If turned off, do auto backup every X minutes. It's independent from last change.

    オンにした場合、最後の変更からX分ごとに自動バックアップを行います。
    編集中のファイルは自動バックアップしません。
    オフにした場合は、最後の変更に関係なく、X分ごとに自動バックアップを行います。

  • Auto pull interval (minutes)
    Pull changes every X minutes. Set to 0 (default) to disable.

    X分ごとに変更をプルします。
    0(デフォルト)を設定すると無効となります。

  • Sync Method
    Selects the method used for handling new changes found in your remote git repository.

    リモート git リポジトリで見つかった新しい変更の処理に使用する方法を選択します。
    訳注)通常はMergeで問題ありません。

f:id:aburi6800:20220411000717p:plain

 - Merge
 - Rebase
 - Other sync service (Only updates the HEAD without touching the working directory)

その他の同期サービス(作業ディレクトリを触らずにHEADだけ更新する)

  • Commit message on manual backup/commit Avaliable placeholders: {{date}} (see below), {{hostname}} (see below) and {{numFiles}} (number of changed files in the commit)

    手動バックアップ/コミット時のコミットメッセージ。 使用可能なプレースホルダーは以下。 {{date}} この下の日付フォーマットに従った書式の日付を埋め込みます。 {{hostname}} この下のホスト名フォーマットに従った書式のホスト名を埋め込みます。 {{numFiles}} コミットで変更されたファイル数を埋め込みます。

  • {{date}} placeholder format Specify custom date format. E.g. "YYYY-MM-DD HH:mm:ss"

    日付の書式をデフォルトから変更したいときに指定します。

f:id:aburi6800:20220411000820p:plain

  • {{hostname}} placeholder replacement Specify custom hostname for every device.

    コミットメッセージにホスト名を埋め込む場合、ホスト名を指定します。

  • Preview commit message

    訳注)Previewボタンを押すと、右上にコミットメッセージのサンプルが表示されます。

  • List filenames affected by commit in the commit body

    コミット時のファイル名の一覧をリストアップします。

  • Specify custom commit message on auto backup You will get a pop up to specify your message

    自動バックアップ時のコミットメッセージをカスタムで指定します。
    メッセージを指定するためのポップアップが表示されます。

  • Current branch
    Switch to a defferent branch.

    現在のブランチ。 別のブランチに切り替えることができます。

  • Pull updates on startup
    Automatically pull updates when Obsidian starts.

    起動時に変更を Pull する。
    Obsidianの起動時に自動的にアップデートを取得します。

  • Disable push Do not push changes to the remote repository.

    プッシュを無効にする。 リモートリポジトリに変更をプッシュしない場合にONにする。

  • Pull changes before push Commit → Pull → push (Only if pushing is enabled)

    プッシュする前に変更をプルする コミット後、プルしてからプッシュする(プッシュが有効な場合のみ)

f:id:aburi6800:20220411000846p:plain

  • Automatically refresh Source Control View on file changes
    On slower machines this may cause lags. If so, just disable this option.

    ファイル変更時にソースコントロールビューを自動的に更新する。 低速なマシンではラグが発生する可能性があります。その場合は、このオプションを無効にしてください。

  • Update submodules
    "Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule.

    サブモジュールの更新 "バックアップの作成 "と "プル "の処理は、サブモジュールが担当します。
    不足している機能:ファイルの競合、プル/プッシュ/コミットされたファイルのカウント。 サブモジュールごとにトラッキングブランチを設定する必要があります。
    訳注)具体的にどういう設定なのかわからないため、問題が無ければオフのままで良いと思います。

  • Disable notifications
    Disable notifications for git operations to minimize distraction. (refre to status bar for updates)

    通知機能を無効にする git の操作に気を取られることがないよう、通知を無効にします。(更新はステータスバーに反映されます) 訳注)処理されるごとに右上に出る通知メッセージが鬱陶しい場合は、オンにします。

  • Show status bar
    Obsidian must be restarted for the changes to take affect.

    ステータスバーを表示する 変更を反映させるには、Obsidianを再起動する必要があります。

  • Custom Git binary path

    訳注)通常はパスが通った場所にあるため設定不要ですが、設定が必要な場合はここにgitのパスを指定します。


Obsidian gitプラグインの利用手順

ローカルのVaultにGithubのリモートリポジトリを登録し、Obsidian gitプラグインGithubへVaultの内容を保存するまでの手順を記載します。

1. 前提

ここでは、以下を前提としています。

  • 既にObisidanを利用しており、Vaultのディレクトリがあること。
  • githubにアカウントを持っていること。
  • githubSSH接続する設定を行っていること。
  • gitの利用経験があること。

なお、まっさらな新規Vaultを作るところからで良い場合は、Githubに適当なリポジトリを作成し、ローカルにcloneしてくるやり方が一番簡単です。

2. Valutをローカルリポジトリにする

ObsidianのVaultにしているディレクトリで、git bashなどを使用して、以下コマンドを実行します。

$ git init

既にVaultにファイルがある場合は、以下を実行してコミットします。
(git commitのメッセージは例です、好きな内容に変更してください)

$ git add -A
$ git commit -M 'first commit.'

ここまでの手順で、ローカルのValutがgitリポジトリとなり、ファイルがあれば登録された状態になります。

3. githubにリモートリポジトリを作成する

続いて、githubにローカルのVaultを保存するためのリポジトリを作成します。
githubの自分のページでRepositoriesタブを開き、「NEW」ボタンをクリック。

f:id:aburi6800:20220413233316p:plain

リポジトリ名を指定して作成します。
Publicだと誰からも見られてしまうため、Privateにしてください。

f:id:aburi6800:20220413233430p:plain

4. ローカルリポジトリgithubのリモートリポジトリを追加する

Githubリポジトリが作成されると、以下にようにクイックセットアップページが表示されます。

f:id:aburi6800:20220413233847p:plain

基本的にはここに書かれている通りにコマンドを実行していきます。
コマンドは、完全に新規であれば一番上の「...or create a new repository on the command line」のものになりますが、今回は既にあるリポジトリからプッシュしたいので、真ん中の「...or push an existing repository from the command line」の手順を実行します。
なお、このコマンドはリポジトリ名に応じて自動的に生成されるものなので、実際は作成したリポジトリで表示されたコマンドを使用してください。

また、ローカルのリポジトリ名(ディレクトリ名)とリモートのリポジトリ名は一致している必要はありません。

ここまでの操作で、ローカルのgitリポジトリgithubのリモートリポジトリが登録され、相互に通信ができる状態になります。
あとは、自動的にGithubにValutの内容がバックアップされるように、Obsidian gitプラグインの設定を行います。

5. Obsidian gitプラグインを設定する

各設定値については先の和訳を参照頂くとして、参考として私の設定している内容を記載しておきます。(ほとんど設定を変更していません)

設定項目
Vault backup interval (minutes) 10
If turned on, do auto backup every X minutes after last change. ... オン
上記以外 初期値のまま

右上の表示が鬱陶しくなったら、「Disable notifications」をオンにするかもしれません。

モバイルアプリとの共存について

PCだけでObsidianを利用する場合は、各端末でそれぞれリモートリポジトリをcloneして同じ設定をしていけば、Github経由でVaultが同期できます。
しかし、モバイルアプリも併用すると、問題が発生します。
モバイルアプリではObsidian gitプラグインが(この記事を執筆している4/14時点では)利用できないため、Vaultの同期は別のクラウドストレージを利用して行うしかありません。
この場合、GithubはあくまでPCからのバックアップ、という目的で利用することになります。
例えば、私の場合は以下のような構成で運用しています。

f:id:aburi6800:20220413231143p:plain
モバイルアプリと共存した運用イメージ

一見して無駄に思えるかも知れませんが、Githubはブラウザからアクセスしてデータを検索・参照できますし、過去の更新履歴も保存されますので、バックアップ目的としても充分有用です。
ObsidianのVaultは個人的なデータを蓄積していく大事なものですので、Githubという信頼性の高いシステムにバックアップできるのは非常に安心材料なのではないかと考えます。

さいごに

Obsidian gitプラグインは比較的開発が活発なので、この記事も都度アップデートできればと思います。
(この記事を書いた時点で、既に1.25.0が公開されている)