GitHub Sync セットアップ
第 38 章: GitHub Sync セットアップ
GitHub Sync は、あなたの SeaMeet ワークスペースを、自身の GitHub リポジトリに存在するプライベートでバージョン管理された Markdown ツリーに変えます。ノートを編集したり、録音名を変更したり、wiki ページを微調整したりするたびに、SeaMeet はバックグラウンドで静かに変更をコミットし、GitHub にプッシュします。別のラップトップで SeaMeet を開くと、最初の起動時にノートがプルダウンされます — 間に Dropbox はなく、ループ内に Seasalt のサーバーもありません。リポジトリはあなたのもの、データもあなたのもの、そして好きなときに github.com で直接閲覧することができます。
モデルはシンプルです:あなたの GitHub リポジトリがストレージです。SeaMeet は同期サービスを実行しません。アカウントに小さな GitHub App をインストールし、ユーザーごとの OAuth トークンを取得し、そのトークンを使用して Git コミットを直接プッシュおよびプルします。ストレージは GitHub の無料枠 — 無制限のプライベートリポジトリを提供 — であるため、同期は実質的に無料です。そして、各 SeaMeet ワークスペースが独自のリポジトリであるため、仕事用と個人用のワークスペースを完全に分離することができます。
章の目標
この章を読むことで、以下のことができるようになります:
- アカウントまたは組織に SeaMeet GitHub App をインストールする
- OAuth 経由で SeaMeet を承認し、プライベート同期リポジトリを作成させる
- 同期ステータスバーを読み、同期ステートマシン内の各状態を理解する
- OAuth がバックグラウンドで自動更新されたとき、または手動で再承認する必要があるときを認識する
- 2 つのデバイスで同じノートが編集された場合の同期競合を解決する
- 同期設定パネル(自動同期、同期間隔、起動時の同期)を調整する
- 最も一般的な失敗モードをトラブルシューティングする
前提条件
開始する前に、次のものがあることを確認してください:
- GitHub アカウント — 無料枠で十分です。GitHub Pro は不要です
- アクティブな同期権限 — BYOK Pro および Sync Pro 等級に含まれます。お使いの請求等級に同期が含まれていない場合、「同期設定」画面には「同期を有効にするにはサブスクライブしてください」のバナーが表示されます。プランの詳細については、第 35 章: サブスクリプションと請求を参照してください。
- SeaMeet で開いているワークスペース — 同期はアプリ全体ではなく、アクティブなワークスペースにアタッチされます。複数のワークスペースがある場合、それぞれが独自の GitHub リポジトリです。
- 動作するインターネット接続 — セットアップフローではデフォルトブラウザで GitHub が開きます
ワークスペースごとに 1 つのリポジトリ。 SeaMeet は、接続する各ワークスペースに対して別々のプライベートリポジトリを作成します。これにより、仕事用ノートと個人用ノートが明確に分離され、もう一方に触れることなく一方を切断できます。
ステップバイステップのセットアップ
初回セットアップは約 90 秒で完了します:GitHub で SeaMeet を承認し、リポジトリを作成させ、初期アップロードを待ち、完了です。
ステップ 1: 同期設定を開く
- 設定の歯車アイコンをクリック
- 左側のレールで Sync タブを開く
- "Sync with GitHub" ヘッダーカードが表示されます
Sync タブが表示されない場合、お使いのサブスクリプション等級には同期が含 まれていません — アップグレードについては第 35 章を参照してください。
"Back up your notes to a private GitHub repo with BYOK Pro" と書かれたバナーが表示される場合、無料アカウントをお持ちです。バナーをクリックして有料壁を開くか、サブスクライブするまで本章の残りをスキップしてください。
ステップ 2: "Set Up GitHub Sync" をクリック
「同期設定」の空状態には 3 つのメリットタイル("Free & private"、"Effectively unlimited"、"One repo per workspace")と、下部にプライマリの Set Up GitHub Sync ボタンが表示されます。
クリックしてください。デフォルトブラウザが GitHub の承認ページに開きます。
ステップ 3: SeaMeet GitHub App をインストール(一度きり)
SeaMeet を初めて承認するとき、GitHub はアカウントに SeaMeet GitHub App をインストールするよう求めます。これは、GitHub アカウントごと(または組織所有のリポジトリに同期したい場合は組織ごと)に 1 回限りのステップです。
GitHub のインストールページで:
- SeaMeet が書き込みたいアカウントまたは組織を選択
- "All repositories" または "Only select repositories" のいずれかを選択 — SeaMeet App は、ユーザーに代わって同期リポジトリを作成するために
contents: writeおよびadministration: write権限が必要です - Install & Authorize をクリック
GitHub は SeaMeet にあなたを戻します。「同期設定」パネルには次のように表示されます:
┌──────────────────────────────────────────────────────┐
│ ✓ 承認済み │
│ ⟳ リポジトリを作成してアップロードしています... │
└──────────────────────────────────────────────────────┘
なぜプレーンな OAuth トークンではなく GitHub App なのか? GitHub Apps はリポジトリごとのきめ細かい権限とローテーションするリフレッシュトークンを持っています。SeaMeet は明示的に選択したリポジトリへの書き込みアクセスのみを持ち、OAuth アクセストークンは 8 時間ごとに期限切れになります — たとえ漏洩しても、ウィンドウは小さいです。(SeaMeet がこれをどのように見えない状態にするかについては、以下の OAuth 自動更新セクションを参照してください。)
ステップ 4: リポジトリ作成(自動)
SeaMeet はあなたの代わりに GitHub API を呼び出し、次のことを行い ます:
- ワークスペースにちなんだ名前のプライベートリポジトリを作成(例:
seameet-work-notes) - ワークスペースフォルダ内にローカル Git リポジトリがまだ存在しない場合は初期化
git initを実行し、オーディオ/ビデオ/スクリーンショットファイルを除外する.gitignoreを書き込み、初期コミットを作成- 新しい GitHub リポジトリを
originとして追加 - 初期コミットをプッシュ
サイドバーの下部にあるステータスバーが次のように遷移するのが表示されます:
リポジトリを作成中... → 同期中... → 同期済み · たった今
それだけです。あなたのワークスペースは GitHub によってバックアップされるようになりました。
ステップ 5: 最初の同期が自動的に実行される
これ以降、SeaMeet は未保存の変更があるたびにデフォルトで 5 分ごとに自動コミットし、各コミットの直後に GitHub にプッシュします。次回 SeaMeet を起動するときは、編集を始める前にアプリが GitHub からプルします — そのため、別のデバイスで行われた変更はアプリが開いた瞬間に表示されます。
同期ステートマシン
SeaMeet の SyncManager は小さなステートマシンを実行し、現在の状態をレンダラーにブロードキャストします。サイドバーの SyncStatusBar と「同期設定」パネルの両方がこの状態から読み取ります。状態を理解することで UI を正確に読むことができます。
┌─────────────┐
│ idle │ ◄──────┐
└──────┬──────┘ │
│ ファイル変更 │
▼ │
┌─────────────┐ │
┌────►│ pending │ │
│ └──────┬──────┘ │
ファイル │ │ コミットタイマー│
変更 │ ▼ │
│ ┌─────────────┐ │
│ │ committing │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ pushing │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ synced │── 5s ──┘
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ pulling │ (起動時またはプッシュ拒否時)
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ conflict │ → ユーザーが解決 → syncing → synced
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ offline │ → ネットワーク復帰 → 再試行
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ timeout │ → ユーザーが「再試行」をクリック
│ └─────────────┘
│
│ ┌────────────────┐
└─────┤ token-expired │ → 再承認カード
└────────────────┘
各状態が UI で意味するものは次のとおりです:
| 状態 | ステータスバーラベル | 意味 |
|---|---|---|
| idle | "Synced · 2 min ago" | 保留中のものはなく、最後のコミットはクリーンだった |
| pending | "Pending..." | 未保存の変更があります。コミットタイマーは次の間隔で起動します |
| committing | "Syncing..." | ローカルで Git コミットが進行中 |
| pushing | "Pushing..." | ローカルコミット完了。GitHub にプッシュ中 |
| pulling | "Pulling..." | 起動同期、またはプッシュが拒否されて先にプルしている |
| syncing | "Syncing..." | 競合解決後に rebase を完了している |
| synced | "Synced · just now" | 完了したばかりの成功。5 秒間表示され、idle に戻ります |
| conflict | "Sync conflict" | ローカルとリモートの両方が同じファイルを編集しました。UI は競合解決フローを表面化します。 |
| error | "Sync error" | 非ネットワーク、非競合の失敗(例: git の失敗)。指数バックオフで最大 5 回自動再試行します。 |
| offline | "Offline" | ネットワークに到達不能。次のファイル変更時または 60 秒後に再試行します。 |
| timeout | "Sync timed out" | git コマンドが 60 秒を超えました(以下の「同期タイムアウト保護」を参照) |
| token-expired | "Re-authorize" | OAuth 更新が失敗し、ユーザーが手動で再承認する必要があります |
| installing-app | "Installing GitHub App..." | ユーザーがブラウザで GitHub App インストールステップを完了するのを待っています |
| creating-repo | "Creating repository..." | セットアップフローが GitHub リポジトリを作成し、初期コミットをプッシュしています |
ステータスバーがスピナーを表示している場合、それは通常のバックグラウンドアクティビティです。琥珀色または赤色の場合、以下のトラブルシューティングセクションを参照してください。
OAuth 自動更新
GitHub Apps は 8 時間ごとに期限切れになるユーザーアクセストークンと、6 か月間有効なリフレッシュトークンを発行します。SeaMeet はこれをあなたのために管理するので、ほとんど考える必要はありません。
仕組み:
- SeaMeet がプッシュまたはプルを行う直前に、
SyncManager._refreshTokenIfNeeded()は現在のトークンが次の 5 分以内に期限切れになるかどうかを確認します。 - もしそうであれば、SeaMeet は保存されたリフレッシュトークンを使用して GitHub の
/login/oauth/access_tokenエンドポイントを呼び出します。GitHub は新しいアクセストークンを返し、リフレッシュトークンをローテーションします。SeaMeet は両方をディスク上の暗号化されたトークンファイルに書き戻します。 - その後、Git コマンドが新しく更新されたトークンで実行されます。画面には何も表示されません — 更新全体は 1 秒もかかりません。
一時的な失敗の処理: ネットワークが不安定だったり、GitHub が 5xx(REFRESH_NETWORK_ERROR)を返したりして更新呼び出しが失敗した場合、SeaMeet は既存のトークンを破棄しません。代わりに、同期は offline 状態に入り、後で再試行します。これは、既存のトークンがまだ数分間有効である可能性があるため重要です — 一時的なネットワークブリップで破棄すると、不必要に同期からログアウトされます。
並行更新の統合: GitHub は使用するたびにリフレッシュトークンをローテーションするため、2 つの並行更新が競合し、一方が他方を無効にします。SeaMeet は並行更新呼び出しを単一の進行中の Promise(_refreshPromise)に折りたたむので、起動同期と再試行付きプッシュがローテーションするトークンを巡って争うことはありません。
更新が本当に失敗したとき: GitHub が REFRESH_TOKEN_EXPIRED を返した場合 — 6 か月のリフレッシュトークンが期限切れまたは取り消されたことを意味します — SeaMeet は次のことを行います:
- 暗号化されたトークンファイルをディスクから削除
token-expired終了状態に入る- 「同期設定」に琥珀色のカードを表示:
┌──────────────────────────────────────────────────────┐
│ ⚠ GitHub の承認が期限切れになりました。同期を再開する │
│ には再承認してください。 │
│ │
│ [ ↻ GitHub を再承認 ] │
└──────────────────────────────────────────────────────┘
GitHub を再承認をクリックします。OAuth フローを通じて戻されます — しかし、GitHub App はすでにインストールされているため、確認のために 1 回クリックするだけで、約 10 秒で完了します。SeaMeet は、次のプッシュの前にローカルの git config から古いトークンを取り除き(古いトークンが origin の URL に埋め込まれている可能性があります)、無効な認証情報でループしないようにします。
同期タイムアウト保護
ネットワークが転送中に黙ってしまった場合 — TCP ソケットがエラーを発生させることなく半開状態のままになる可能性があります — Git コマンドは永遠にハングする可能性があります。SeaMeet はすべての Git プッシュとプルを 60 秒の AbortController タイムアウトでラップします。
プッシュまたはプルが 60 秒以内に完了しない場合、SeaMeet は次のことを行います:
- git サブプロセスを中止
timeout状態に入る- 「同期設定」に琥珀色のカードを表示:
┌──────────────────────────────────────────────────────┐
│ ⚠ 同期がタイムアウトしました。ネットワークの問題または │
│ GitHub 承認の期限切れが原因の可能性があります。 │
│ │
│ [ ↻ 同期を再試行 ] [ GitHub を再承認 ] │
└──────────────────────────────────────────────────────┘
同期を再試行は commitNow を再度実行します。ネットワークが少しの間切れただけだと思う場合は、これをクリックする正しいボタンです。GitHub を再承認は OAuth フローを再度実行します。タイムアウトが繰り返し発生する場合は、これをクリックしてください。通常、ネットワークではなくトークンが問題であることを意味します。
何もクリックしなくても、状態は約 30 秒後に自動的に idle に戻ります — 同期は次のファイル変更で再試行されます。
競合解決
同じファイルが前回の同期以降に 2 つのデバイスで編集された場合、競合が発生します。例:ラップトップで meetings/2026-06-03-standup.md に段落を書き、その後、友人のマシンで同じ段落を編集しました。2 番目のデバイスがプッシュすると、履歴が分岐するため GitHub はプッシュを拒否します。
SeaMeet は次のように処理します:
- rebase でリモートの変更をプル
- マージ競合マーカーを検出
conflict状態に入る- サイドバーステータスバー(クリック可能になる)と「同期設定」競合パネルで競合を表面化
競合解決モーダル
同期が conflict のときにステータスバーをクリックすると、競合解決モーダルが開きます:
┌──────────────────────────────────────────────────────────┐
│ ⚠ 同期競合 1 / 2 [×] │
├────────────────────────────────────────────────────────── ┤
│ │
│ "2026-06-03-standup.md" が別のデバイスで変更されました。 │
│ │
│ ┌────────────────────────┐ ┌────────────────────────┐ │
│ │ ✎ 手動で編集 │ │ ✦ Agent マージ │ │
│ └────────────────────────┘ └────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────┘
2 つのオプションがあります:
手動で編集 — システムのデフォルトエディタで競合ファイルを開き、Git の標準 <<<<<<< / ======= / >>>>>>> マーカーが配置された状態で開きます。ファイルを編集して解決し、保存してから SeaMeet に戻り、完了をクリックします。SeaMeet は解決されたファイルをステージングし、rebase を続行します。
Agent マージ(BYOK Pro のみ、AI エージェントの設定が必要) — 両方のバージョ ンを設定済みの AI エージェント(GitHub Copilot または Claude Code、第 36 章: BYOK セットアップガイドを参照)に送信し、両方の意図を保持するマージバージョンを生成するよう要求します。エージェントの出力は自動的にステージングされ、rebase が完了するまで「同期を完了しています...」スピナーが表示されます。
一度に複数の競合がある場合、モーダルはカウンタ(1 / 2、2 / 2)と「同期設定」競合パネルのシェブロンアローを表示するので、一度に 1 つずつ進めることができます。
"Keep mine" / "Keep theirs" / "Keep both" オプションは、手動エディタ内に入ったときの自然な選択肢として現れます:マーカー間にあなたのバージョンのテキストだけを残す、リモートバージョンのテキストだけを残す、または両方を交互に配置する。Agent マージボタンは事実上「両方をインテリジェントに保持」を行います。
間違いを犯した場合は? 同期競合は非破壊的です。Git はインデックスに元の「自分たちの」と「彼らの」コンテンツを保持し、
getConflictVersions(filePath)は解決中のいつでもどちらかを取得できます。誤って作業を失うことはありま せん。
同期設定パネル
接続すると、「同期設定」(設定 → Sync)では、すべてを 1 つの場所に集めた単一の画面が表示されます:
┌─────────────────────────────────────────────────────────────┐
│ ✓ 同期とバックアップ │
│ あなたのノートと wiki は GitHub に自動的に同期されます。 │
│ オーディオ録音、ビデオ録音、スクリーンショットは │
│ 同期されません。 │
├─────────────────────────────────────────────────────────────┤
│ ⓘ https://github.com/you/seameet-work-notes │
│ 🕒 最後の同期: 4 分前 │
├─────────────────────────────────────────────────────────────┤
│ 自動同期 [ オン ◉ ] │
│ 同期間隔 [ 5 分 ▾ ] │
│ ブランチ main │
│ 最終同期 4 分前 │
├─────────────────────────────────────────────────────────────┤
│ 変更時に自動同期 [ オン ◉ ] │
│ 起動時に同期 [ オン ◉ ] │
├─────────────────────────────────────────────────────────────┤
│ [ ⤓ 今すぐ同期 ] │
├─────────────────────────────────────────────────────────────┤
│ [ ↗ GitHub で表示 ] [ 切断 ] │
└─────────────────────────────────────────────────────────────┘
コントロール、上から下へ:
- 自動同期 — バックグラウンドコミットタイマーのマスタートグル。オフは、SeaMeet が今すぐ同期をクリックしたときにのみコミットすることを意味します。
- 同期間隔 — コミットタイマーが起動する頻度。選択肢は 1 / 5 / 10 / 30 分です。デフォルトは 5 分です。1 分間隔はアクティブなノート取りに適しています。30 分は、コミットをバッチ処理したい低編集ワークスペースに適しています。
- ブランチ — SeaMeet が同期する Git ブランチ。ほとんどの場合
mainです。UI では読み取り専用です。 - 最終同期 — 最後の成功したプッシュの相対タイムスタンプ。
- 変更時に自動同期 — オンの場合、プッシュは各ローカルコミットの直後に発生します(典型的なケース)。オフの場合、SeaMeet はローカルにコミットしますが、今すぐ同期をクリックしたときにのみプッシュします。プッシュをバッチ処理したい場合(例: 従量制接続)に役立ちます。
- 起動時に同期 — オンの場合、SeaMeet はアプリが起動した瞬間に GitHub からプルします。接続が非常に遅い場合を除き推奨されます。
- 今すぐ同期 — 即時のコミットとプッシュサイクルを強制します。タイマーを待ちません。ラップトップを閉じる前に役立ちます。
- GitHub で表示 — ブラウザでリポジトリを開きます。
- 切断 — 保存された OAuth トークンをクリアし、暗号化されたトークンファイルを削除し、ローカル Git リポジトリから
originを削除します。ローカルの Markdown ファイルと Git 履歴はそのままです — GitHub へのリンクだけが切断されます。
何が同期されるか(そして何が同期されないか)
これは章のインデックスに記載されていますが、ここで繰り返す価値があります:
| 同期 | 非同期 |
|---|---|
ノート (.md ファイル) | オーディオ録音 (.webm、.mp3) |
Wiki ページ (.md ファイル) | ビデオ録音 (.webm、.mp4) |
| 録音マニフェスト (メタデータ JSON) | スクリーンショット (.png、.jpg) |
| AI 要約と文字起こし | キャッシュされた AI 生成物 |
| Wikilink グラフ | アプリ設定 |
.gitignore | エディタの一時状態 |
SeaMeet が書き込む .gitignore は、すべての大きなバイナリカテゴリを除外します。これは意図的なものです:GitHub の無料プライベートリポジトリは 1 GB が上限であり、30 分のビデオはそれだけで使い切ってしまいます。SeaMeet はメディアをローカルディスクに保持し、軽量な Markdown のみを同期します。
完全なメディア同期が必要な場合、それは Sync Pro 等級です — 第 35 章を参照してください。
トラブルシュー ティング
"Set Up GitHub Sync" をクリックした直後の「承認失敗」
原因と修正:
- ポップアップブロッカー — ブラウザウィンドウが開かなかった場合、OS またはブラウザが起動をブロックした可能性があります。Set Up GitHub Sync を再度クリックし、ポップアッププロンプトを確認してください。
- GitHub App の権限を拒否した — フローを戻って
contents: write+administration: writeスコープを承諾してください。administration: writeがないと、SeaMeet はあなたのためにリポジトリを作成できません。 - 状態不一致エラー — 同じ OAuth フローで競合する可能性のある他の SeaMeet ウィンドウを閉じて、再試行してください。
セットアップ中の「Repo permissions」エラー
エラーは "GitHub App has 'contents: read' permission, but needs 'contents: write'." のようなものです。これは古いバージョンの App をインストールしたことを意味します。
修正:
- github.com/settings/installations を開く
- リストから SeaMeet を見つけて Configure をクリック
- Repository permissions の下で、Contents と Administration を Read and write に変更
- 保存してから、アプリをアンインストールして再インストール — GitHub は再インストール時にのみ新しい権限を適用します
- SeaMeet で Set Up GitHub Sync を再実行
「GitHub に到達できませんでした」/ 同期が「Offline」で停止
ネットワーク障害です。SeaMeet は次のときに自動的に再試行します:
- ファイルに変更を加える(即時の再試行を引き起こす)
- 最後の再試行から 60 秒経過
ネットワークが復活しても数分後にまだ Offline と表示される場合:
- 今すぐ同期をクリックして再試行を強制
- タイムアウトする場合: ファイアウォールが github.com をブロックしていないか確認
- 最後の手段として、SeaMeet を再起動 — 起動同期が起動時に発生します
同期が「Pending」で停止
これは通常、自動コミットタイマーがまだ起動していないことを意味します。デフォルトでは 5 分ごとに起動します。待ちたくないですか?今すぐ同期をクリックしてください。
今すぐ同期で同期が Pending を超えない場合は、次を確認してください:
- 同期を含む請求等級ですか?「同期設定」を開く — サブスクライブバナーが表示される場合、同期は権限レイヤーで無効になっています。
- Markdown ツリーの外に未コミットの変更がありますか?自動コミットタイマーは
_pendingChangesが空でないときにのみ起動します。
「token-expired カードが表示される」
これは OAuth 更新ライフサイクルの予期される終了です — 6 か月のリフレッシュトークンが期限切れになったか、GitHub App を取り消したか、GitHub パスワードを変更した(すべての OAuth トークンを無効にする)かのいずれかです。
修正: カード内の GitHub を再承認をクリックします。フローは初期セットアップと同じですが、GitHub App インストールステップはスキップされます(すでにインストールされています)。約 10 秒かかります。
競合解決パネルが閉じない
パネルは、リスト内のすべての競合が解決されたときにのみ閉じます。カウンタ(1 / 3)が表示される場合は、「同期設定」競合パネルのシェブロンアローを使用して残りのファイルを進めてください。それぞれに明示的な解決(手動編集 + 完了、または Agent マージ)が必要です。
パネルが競合があると主張しているのにファイル内にマーカーが見えない場合は、今すぐ同期をクリックしてください — 古い conflict 状態は次の成功した同期試行でクリアされます。
「プッシュ拒否」ループ
同期が pushing と pulling の間で繰り返し交互に行われる場合、リモートが先に進み続けているため、GitHub はあなたのプッシュを拒否しています。これは次のような場合に発生する可能性があります:
- 別の SeaMeet インスタンスが同じリポジトリに対して実行され、これが追いつくよりも速くプッシュしている — 他のインスタンスを閉じる。
- 誰か(または何らかのツール)が SeaMeet の外から GitHub リポジトリにコミットしている — ローカルクローンが追いつくまで外部ツールを一時停止する。
セキュリティに関する注意
OAuth トークンの保存場所: Electron の safeStorage API を介して OS のキーチェーンに保存されます。Windows では DPAPI、macOS では Keychain Services、Linux では libsecret です。暗号化された blob はファイルモード 0o600 で <userData>/github-token.enc に書き込まれます。このファイルには、アクセストークン、リフレッシュトークン、期限切れタイムスタンプ、および GitHub App のクライアント ID、クライアントシークレット、slug が保持されます。
argv に格納されないもの: OAuth トークンは -c http.extraHeader=... 引数として git に渡されることはありません。argv は ps aux を介して他のユーザーに表示されるからです。代わりに、Authorization ヘッダーはプロセスにプライベートな GIT_CONFIG_PARAMETERS 環境変数を介して注入されます。同じマシン上の他のユーザーはあなたのトークンを見ることができません。
リポジトリ内のディスクに残るもの: プレーンな Markdown ファイルです。トークンも、シークレットも、認証情報もありません。.gitignore はメディアファイルを除外しますが、ノート本文にシークレットを貼り付けることは避けるべきです — それらは同期されます。
アクセスの取り消し: リポジトリへの SeaMeet のアクセスを即座に切断するには、github.com/settings/installations で SeaMeet GitHub App をアンインストールします。次の同期試行は token-expired で失敗し、SeaMeet はローカルトークンをクリアします。ローカルノートはそのままです。
クイックリファレンス
┌─────────────────────────────────────────────────────────────┐
│ GITHUB SYNC │
│ クイックリファレンス │
├─────────────────────────────────────────────────────────────┤
│ 同期設定を開く │ 設定 → Sync │
│ 初回セットアップ │ "Set Up GitHub Sync" をクリック │
│ 必要なスコープ │ contents: write, admin: write │
│ リポジトリ命名 │ ワークスペースごとに 1 つのプライベート│
├─────────────────────────────────────────────────────────────┤
│ デフォルト同期間隔 │ 5 分 (1 / 5 / 10 / 30) │
│ 同期を強制 │ "Sync Now" ボタン │
│ プッシュ時の自動同期 │ オン (「同期設定」でトグル) │
│ 起動時に同期 │ オン (「同期設定」でトグル) │
├─────────────────────────────────────────────────────────────┤
│ OAuth 更新マージン │ 期限切れの 5 分前 │
│ Git コマンドタイムアウト│ 60 秒 (AbortController) │
│ 自動再試行上限 │ 5 回試行、指数バックオフ │
│ トークン保存 │ OS キーチェーン (safeStorage) │
├─────────────────────────────────────────────────────────────┤
│ 競合 UI │ 競合時にステータスバーをクリック │
│ 手動で解決 │ マーカーを編集 → 完了 │
│ Agent マージ │ BYOK Pro + AI エージェント設定済み │
├─────────────────────────────────────────────────────────────┤
│ 切断 │ 同期設定 → 切断 │
│ GitHub から取り消し │ github.com/settings/installations │
│ リポジトリを表示 │ "View on GitHub" リンク │
└─────────────────────────────────────────────────────────────┘
Last updated: 2026-06-04
← 第 37 章: GitHub Copilot プロバイダー | (マニュアルの終わり — インデックス に戻る)
Published: