「2台同時に触っていないのに、なぜか競合している」
「日記ファイルが謎の記号だらけになり、同期が止まってしまった」
ObsidianをGitHub経由でPCとスマホに同期していて、こんな経験はありませんか?
実は私もそうでした。
これが起きたとき、正直かなり焦りました。
この記事は、Obsidian同期自動化ガイド に基づき、GitHub経由で同期を行っている環境でのトラブル対策です。
この記事では、その原因と直し方をまとめます。
同じ状況で詰まっている方の参考になれば幸いです。
以前のトラブル原因記事もご参考ください。
コンフリクトとは何か
コンフリクト(競合)が起きると、ファイルにこんな記号が現れます。
<<<<<<< HEAD
- PCで書いた内容
=======
- スマホで書いた内容
>>>>>>> origin/main
これは「コンフリクトマーカー」です。
Gitが「2つの変更をどう合体すればいいかわからない。手動で直して」と伝えています。
記号の意味はシンプルです。
| 記号 | 意味 |
|---|---|
<<<<<<< HEAD 〜 ======= | PC側の変更内容 |
======= 〜 >>>>>>> origin/main | GitHub側(スマホから送られた)の変更内容 |
このマーカーが残っている限り、Gitはファイルを「競合中」として扱い続けます。
具体的な直し方は後述します。
私の同期設定
原因を理解するために、まず自分の設定を整理しておきます。
スマホ(iPhone)の設定
- Obsidianを開いたとき: GitHubから Pull(最新データを取得)
- Obsidianを閉じたとき: GitHubへ Commit & Push(書いた内容を送信)
- ※ iOSショートカット + Working Copy で自動化しています
PC(Windows)の設定
- Obsidian Git プラグインで 1分ごとに自動で Pull & Push
普段はこれで快適に動いていました。
「両方開いてなければ大丈夫」くらいの感覚で使っていたのが、今回の罠でした。
原因は大きく分けて以下の2つ、「PC of 1分タイムラグ」 と 「スマホ of Push忘れ(アプリを閉じていない)」 です。
原因1:PCの「1分タイムラグ」によるすれ違い
「PCで書いた → すぐGitHubに届く」と思ってしまいますが、実際には自動同期が走るのは最大1分後です。
この1分のタイムラグの間にスマホを開いてしまうと、スマホ側は「PCの変更が入っていない古いデータ」を掴んでしまいます。
【すれ違いの流れ(パターンA:PCのタイムラグ)】

原因2:スマホの「Push忘れ(アプリを閉じていない)」
iPhone側の自動同期は「Obsidianアプリを閉じたとき」に動く設定にしています。
しかし、スマホでメモを書いた後、ホーム画面に戻らずにスリープさせたり、アプリを開きっぱなしで放置してしまうと、変更がGitHubに送信(Push)されません。
この「未送信」の状態のままPCで新しくメモを書いたり、今度スマホを開いたときに時間差で自動Pushが走ったりすると、履歴が衝突しておかしくなってしまいます。
【すれ違いの流れ(パターンB:スマホのPush忘れ)】

整理するとこうなります。
- PCの自動同期が走る前の「1分間」にスマホで書き始める
- スマホで書き終わった後、アプリを閉じずに放置してPushを忘れる
このどちらかが起きると、Gitから見て「2つの端末で、別々の古いデータをベースに同時に書き換えられた(すれ違い)」状態になり、競合が発生します。 タイムラグや送信漏れのせいで、Gitからすると「2か所で別の変更がされた」状態に見えてしまいます。
発生したときの直し方
STEP 1|マーカーを手動で取り除く
まず、ファイル内のコンフリクトマーカーを取り除きます。
⚠️ ここが落とし穴:マーカーを消すだけでは解消になりません。
実際、最初にこれをやらかしました。
「記号を消してきれいにしたのに、まだ競合中って出てる…?」という状態です。
なぜかというと、コンフリクトが起きた瞬間にGitは自動同期を止めます(ロック状態)。
ファイルを編集しただけでは、このロックは解除されません。
コミットして初めて、Gitに「解決した」と伝わります。
| ステップ | やること | Gitの状態 |
|---|---|---|
| ① ファイル編集 | 記号を取り除く | まだロック中 |
| ② コミット | 解決をGitに宣言 | ロック解除 |
| ③ プッシュ | 内容を送信 | 同期が再開する |
マーカーの取り除き方はシンプルです。
日記の場合は両方とも自分の記録なので、記号だけを消して両方を残せばOKです。
Before(コンフリクト中)
>>>>>> HEAD
- PCで書いた内容
=======
- スマホで書いた内容
<<<<<< origin/main
After(記号を取り除いた後)
- PCで書いた内容
- スマホで書いた内容
コードのコンフリクトの場合は「どちらが正しいか」を判断して片方を残します。
日記はそういう判断が不要なので楽です。
STEP 2|コミット & プッシュ
マーカーを取り除いたら、次はコミットです。
ここで競合が正式に解消されます。
方法1:Obsidianから操作する(おすすめ)
1. Ctrl + P を押す
2. "Obsidian Git: Commit all changes" を選択・実行
→ ここでロックが解除される
3. "Obsidian Git: Push" を選択・実行
→ GitHubへ送信・同期が再開する
Obsidianが生成した競合レポートファイルも、コミット時に自動で削除されます。
操作はこれだけで完了です。
方法2:コマンドラインで操作する
ターミナルやPowerShellが使える方はこちらでも同じことができます。
# 解決済みとしてマーク
git add <競合していたファイル名>
# コミット(ここでロックが解除される)
git commit -m "Merge conflict resolved"
# GitHubへ送信
git push
方法3:Working Copyでマージする(スマホ側)
PCを使わず、スマホ(Working Copyアプリ)の操作だけで履歴を合体させて解決する方法です。
- Working Copyアプリを開く
- 画面中央下の
Synchronizeをタップする Fetchをタップして最新の履歴(PC側の変更)を確認するMergeを選択して、スマホの変更とPCの変更を合体させる- 通常通り
Pushを実行する
予防策
直し方を覚えたうえで、そもそも起こさない習慣も持っておきたいところです。
日常の習慣
スマホに切り替えるとき Obsidianを開いたあと、すぐ書き始めないことが大事です。
同期完了の通知が消えてから書き始めます。
開いた直後に書くと、まだ古いデータが使われている可能性があります。
スマホを使い終わったとき 必ず 「アプリを閉じる(ホーム画面に戻る)」 習慣をつけましょう。
iPhoneのショートカット同期は「アプリを閉じたこと」を検知してGitHubに変更を送ります。開きっぱなしで放置してしまうと、送信漏れになり、次にPCで開いたときに競合する原因になります。
PCを離れるとき 次にスマホで書く可能性があるなら、手動でPushしておきます。
1分の自動同期を待たずにGitHubを最新にできるので、スレ違いが起きなくなります。
1. Ctrl + P を押す
2. "Obsidian Git: Push" を選択・実行
この習慣を身につけてから、競合がほぼ起きなくなりました。
設定の見直し
Obsidian Gitの自動Push間隔を「1分」→「30秒」に短縮する方法もあります。
タイムラグが物理的に小さくなるので、すれ違いのリスクが減ります。
ただし、コミット履歴が増えます。
気になる方は許容できる範囲で調整してみてください。
💡 その他の同期エラー(SSHエラーなど)でお困りの場合
コンフリクト以外の同期エラー全般の対処法については、こちらの同期トラブル解決ガイド にまとめています。
まとめ
- 原因は PCの1分タイムラグの間に、スマホが古いデータを掴んだこと
- マーカーを消すだけではダメ。コミットまでが解消の手順
- 予防は「切り替え前に同期完了を確認」か「手動Push」が一番効果的
自動化の落とし穴でしたが、仕組みがわかってしまえば対処は難しくないです。
同じ状況で困っている方の参考になれば幸いです。

コメント