Persediaan Penyegerakan GitHub
Bab 38: Persediaan Penyegerakan GitHub
GitHub Sync mengubah ruang kerja SeaMeet anda menjadi pokok Markdown peribadi terkawal versi yang tinggal dalam repositori GitHub anda sendiri. Setiap kali anda mengedit nota, menamakan semula rakaman, atau menukar halaman wiki, SeaMeet secara senyap mengkomit perubahan di latar belakang dan mendorongnya ke GitHub. Buka SeaMeet pada komputer riba berbeza dan nota anda diturunkan pada pelancaran pertama — tiada Dropbox di tengah, tiada pelayan Seasalt dalam gelung. Repo adalah milik anda, data adalah milik anda, dan anda boleh melayarinya secara langsung di github.com jika anda mahu.
Model adalah mudah: repositori GitHub anda adalah storan. SeaMeet tidak menjalankan perkhidmatan penyegerakan. Ia memasang GitHub App kecil pada akaun anda, mendapat token OAuth setiap pengguna, dan menggunakan token itu untuk mendorong dan menarik komit Git secara terus. Kerana storan adalah peringkat percuma GitHub — yang memberi anda repo peribadi tanpa had — penyegerakan secara berkesan adalah percuma. Dan kerana setiap ruang kerja SeaMeet adalah repositorinya sendiri, anda boleh memastikan ruang kerja kerja dan peribadi dipisahkan sepenuhnya.
Objektif Bab
Selepas membaca bab ini, anda akan dapat:
- Pasang SeaMeet GitHub App pada akaun atau organisasi anda
- Berikan kebenaran SeaMeet melalui OAuth dan biarkan ia mencipta repositori penyegerakan peribadi untuk anda
- Baca bar status penyegerakan dan fahami setiap keadaan dalam mesin keadaan penyegerakan
- Mengenali apabila OAuth telah auto-disegarkan di latar belakang dan apabila anda perlu memberi kebenaran semula secara manual
- Selesaikan konflik penyegerakan apabila nota yang sama telah diedit pada dua peranti
- Tala panel Sync Settings (auto-sync, selang sync, sync pada permulaan)
- Selesaikan mod kegagalan yang paling biasa
Prasyarat
Sebelum anda mula, pastikan anda mempunyai:
- Akaun GitHub — peringkat percuma baik; anda tidak perlukan GitHub Pro
- Kelayakan penyegerakan aktif — termasuk dengan peringkat BYOK Pro dan Sync Pro. Jika peringkat pengebilan anda tidak termasuk penyegerakan, skrin Sync Settings akan menunjukkan sepanduk "Subscribe to enable sync". Lihat Bab 35: Langganan & Pengebilan untuk butiran pelan.
- Ruang kerja terbuka dalam SeaMeet — penyegerakan dilampirkan pada ruang kerja aktif, bukan aplikasi keseluruhan. Jika anda mempunyai pelbagai ruang kerja, setiap satu adalah repositori GitHub sendiri.
- Akses internet berfungsi — aliran persediaan membuka GitHub dalam pelayar lalai anda
Satu repo setiap ruang kerja. SeaMeet mencipta repositori peribadi berasingan untuk setiap ruang kerja yang anda sambungkan. Ini memastikan nota kerja dan nota peribadi dipisahkan dengan bersih dan bermakna anda boleh memutuskan sambungan satu tanpa menyentuh yang lain.
Persediaan Langkah demi Langkah
Persediaan kali pertama mengambil masa kira-kira 90 saat: berikan kebenaran SeaMeet pada GitHub, biarkan ia mencipta repo anda, tunggu muat naik awal, dan selesai.
Langkah 1: Buka Tetapan Sync
- Klik ikon gear Tetapan
- Buka tab Sync dalam rel kiri
- Anda akan melihat kad pengepala "Sync with GitHub"
Jika anda tidak melihat tab Sync, peringkat langganan anda tidak termasuk penyegerakan — lihat Bab 35 untuk naik taraf.
Jika anda melihat sepanduk yang berbunyi "Sandarkan nota anda ke repo GitHub peribadi dengan BYOK Pro", anda mempunyai akaun percuma. Klik sepanduk untuk membuka paywall, atau langkau seluruh bab ini sehingga anda telah melanggan.
Langkah 2: Klik "Set Up GitHub Sync"
Keadaan kosong Sync Settings menunjukkan tiga jubin manfaat ("Percuma & peribadi", "Berkesan tanpa had", "Satu repo setiap ruang kerja") dan butang utama Set Up GitHub Sync di bahagian bawah.
Kliknya. Pelayar lalai anda terbuka ke halaman kebenaran GitHub.
Langkah 3: Pasang SeaMeet GitHub App (sekali sahaja)
Kali pertama anda memberi kebenaran SeaMeet, GitHub akan meminta anda memasang SeaMeet GitHub App pada akaun anda. Ini adalah langkah sekali sahaja setiap akaun GitHub (atau setiap organisasi, jika anda mahu menyegerakkan ke repo milik organisasi).
Pada halaman pemasangan GitHub:
- Pilih akaun atau organisasi yang anda mahu SeaMeet menulis
- Pilih sama ada "All repositories" atau "Only select repositories" — SeaMeet App memerlukan kebenaran
contents: writedanadministration: writesupaya ia boleh mencipta repo sync bagi pihak anda - Klik Install & Authorize
GitHub melantun anda kembali ke SeaMeet. Panel Sync Settings kini menunjukkan:
┌──────────────────────────────────────────────────────┐
│ ✓ Diberi kebenaran │
│ ⟳ Mencipta repositori & memuat naik... │
└──────────────────────────────────────────────────────┘
Mengapa GitHub App dan bukan token OAuth biasa? GitHub Apps mempunyai kebenaran per-repo yang halus dan token refresh berputar. SeaMeet hanya pernah mempunyai akses tulis kepada repo yang anda pilih secara eksplisit, dan token akses OAuth tamat tempoh setiap 8 jam — walaupun ia bocor, tetingkap akan kecil. (Lihat bahagian OAuth Auto-Refresh di bawah untuk cara SeaMeet menyimpannya tidak kelihatan kepada anda.)
Langkah 4: Penciptaan repositori (automatik)
SeaMeet kini memanggil API GitHub bagi pihak anda dan:
- Mencipta repo peribadi yang dinamakan selepas ruang kerja anda (cth.
seameet-work-notes) - Memulakan repo Git tempatan di dalam folder ruang kerja anda jika satu belum wujud
- Menjalankan
git init, menulis.gitignoreyang mengecualikan fail audio/video/tangkapan skrin, dan membuat komit awal - Menambah repo GitHub baharu sebagai
origin - Mendorong komit awal
Anda akan melihat bar status di bahagian bawah bar sisi beralih melalui:
Mencipta repositori... → Menyegerakkan... → Disegerakkan · baru sahaja
Itu sahaja. Ruang kerja anda kini disokong oleh GitHub.
Langkah 5: Penyegerakan pertama berjalan secara automatik
Dari sekarang, SeaMeet auto-mengkomit setiap 5 minit (secara lalai) setiap kali anda mempunyai perubahan yang belum disimpan, dan mendorong ke GitHub dengan serta-merta selepas setiap komit. Pada pelancaran SeaMeet seterusnya, aplikasi menarik dari GitHub sebelum anda mula mengedit — supaya perubahan yang dibuat pada peranti lain muncul detik aplikasi dibuka.
Mesin Keadaan Sync
SyncManager SeaMeet menjalankan mesin keadaan kecil dan menyiarkan keadaan semasanya kepada penyebar. SyncStatusBar bar sisi dan panel Sync Settings kedua-duanya membaca dari keadaan ini. Memahami keadaan membantu anda membaca UI dengan tepat.
┌─────────────┐
│ idle │ ◄──────┐
└──────┬──────┘ │
│ perubahan fail│
▼ │
┌─────────────┐ │
┌────►│ pending │ │
│ └──────┬──────┘ │
perubahan │ │ pemasa komit │
fail │ ▼ │
│ ┌─────────────┐ │
│ │ committing │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ pushing │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ synced │── 5s ──┘
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ pulling │ (permulaan atau push-ditolak)
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ conflict │ → pengguna selesai → syncing → synced
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ offline │ → rangkaian kembali → cuba lagi
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ timeout │ → pengguna klik Cuba lagi
│ └─────────────┘
│
│ ┌────────────────┐
└─────┤ token-expired │ → kad beri kebenaran semula
└────────────────┘
Inilah apa yang setiap keadaan bermaksud dalam UI:
| Keadaan | Label bar status | Apa maksudnya |
|---|---|---|
| idle | "Disegerakkan · 2 min lepas" | Tiada yang tertunda, komit terakhir bersih |
| pending | "Tertunda..." | Anda mempunyai perubahan yang belum disimpan; pemasa komit akan menembak pada selang seterusnya |
| committing | "Menyegerakkan..." | Komit Git sedang berjalan secara tempatan |
| pushing | "Mendorong..." | Komit tempatan selesai; mendorong ke GitHub |
| pulling | "Menarik..." | Sama ada sync permulaan, atau push ditolak dan kami menarik dahulu |
| syncing | "Menyegerakkan..." | Menyelesaikan rebase selepas penyelesaian konflik |
| synced | "Disegerakkan · baru sahaja" | Berjaya baru selesai; ditunjukkan selama 5 saat, kemudian kembali ke idle |
| conflict | "Konflik sync" | Tempatan dan jauh kedua-duanya mengedit fail yang sama. UI memunculkan aliran penyelesaian konflik. |
| error | "Ralat sync" | Kegagalan bukan rangkaian, bukan konflik (cth. kegagalan git). Auto-cuba semula dengan backoff eksponen sehingga 5 kali. |
| offline | "Luar talian" | Rangkaian tidak boleh dicapai. Akan cuba lagi pada perubahan fail seterusnya atau selepas 60 saat. |
| timeout | "Sync tamat masa" | Perintah git mengambil masa lebih dari 60 saat (lihat Perlindungan Tamat Masa Sync di bawah) |
| token-expired | "Beri kebenaran semula" | Penyegaran OAuth gagal dan pengguna mesti memberi kebenaran semula secara manual |
| installing-app | "Memasang GitHub App..." | Menunggu pengguna menyelesaikan langkah pemasangan GitHub App dalam pelayar mereka |
| creating-repo | "Mencipta repositori..." | Aliran persediaan mencipta repo GitHub dan mendorong komit awal |
Jika bar status menunjukkan pemutar, itu adalah aktiviti latar belakang normal. Jika ia ambar atau merah, lihat bahagian Penyelesaian Masalah di bawah.
OAuth Auto-Refresh
GitHub Apps mengeluarkan token akses pengguna yang tamat tempoh setiap 8 jam, ditambah token refresh yang sah selama 6 bulan. SeaMeet menguruskan ini untuk anda supaya anda hampir tidak pernah perlu memikirkannya.
Cara ia berfungsi:
- Apabila SeaMeet hampir untuk mendorong atau menarik,
SyncManager._refreshTokenIfNeeded()menyemak sama ada token semasa tamat tempoh dalam 5 minit seterusnya. - Jika ya, SeaMeet memanggil endpoint
/login/oauth/access_tokenGitHub dengan token refresh yang disimpan. GitHub mengembalikan token akses baharu dan memutar token refresh. SeaMeet menulis kedua-duanya kembali ke fail token yang disulitkan pada cakera. - Perintah Git kemudian berjalan dengan token yang baru disegarkan. Anda tidak melihat apa-apa pada skrin — keseluruhan penyegaran mengambil masa kurang daripada satu saat.
Pengendalian kegagalan sekejap: Jika panggilan penyegaran gagal kerana rangkaian terputus-putus atau GitHub mengembalikan 5xx (REFRESH_NETWORK_ERROR), SeaMeet tidak membuang token yang sedia ada. Sebaliknya penyegerakan masuk ke keadaan offline dan cuba lagi kemudian. Ini penting kerana token sedia ada mungkin masih sah untuk beberapa minit lagi — membuangnya pada gangguan rangkaian sekejap akan log keluar anda dari penyegerakan tanpa perlu.
Penggabungan penyegaran serentak: GitHub memutar token refresh setiap kali anda menggunakannya, jadi dua penyegaran serentak akan berlumba dan satu akan membatalkan yang lain. SeaMeet meruntuhkan panggilan penyegaran serentak ke dalam satu Promise dalam penerbangan (_refreshPromise) supaya sync permulaan dan dorong-dengan-cuba-semula tidak pernah bergaduh atas token yang berputar.
Apabila penyegaran benar-benar gagal: Jika GitHub mengembalikan REFRESH_TOKEN_EXPIRED — bermakna token refresh 6 bulan telah tamat tempoh atau dibatalkan — SeaMeet:
- Memadam fail token yang disulitkan dari cakera
- Memasuki keadaan terminal
token-expired - Menunjukkan kad ambar dalam Sync Settings:
┌──────────────────────────────────────────────────────┐
│ ⚠ Kebenaran GitHub telah tamat tempoh. Sila │
│ beri kebenaran semula untuk menyambung sync. │
│ │
│ [ ↻ Beri Kebenaran Semula GitHub ] │
└──────────────────────────────────────────────────────┘
Klik Beri Kebenaran Semula GitHub. Anda dihantar kembali melalui aliran OAuth — tetapi kerana GitHub App sudah dipasang, ia adalah satu klik untuk mengesahkan dan anda selesai dalam kira-kira 10 saat. SeaMeet kemudian mengupas sebarang token basi dari git config tempatan anda (token lama mungkin tertanam dalam URL origin) sebelum dorongan seterusnya, supaya anda tidak gelung pada kelayakan mati.
Perlindungan Tamat Masa Sync
Perintah Git boleh tergantung selama-lamanya jika rangkaian senyap pertengahan pemindahan — soket TCP mungkin duduk dalam keadaan separuh terbuka tanpa membangkitkan ralat. SeaMeet membungkus setiap Git push dan pull dalam tamat masa AbortController 60 saat.
Jika push atau pull tidak selesai dalam 60 saat, SeaMeet:
- Membatalkan subproses git
- Memasuki keadaan
timeout - Menunjukkan kad ambar dalam Sync Settings:
┌──────────────────────────────────────────────────────┐
│ ⚠ Sync tamat masa. Ini mungkin disebabkan oleh isu │
│ rangkaian atau kebenaran GitHub tamat tempoh. │
│ │
│ [ ↻ Cuba Semula Sync ] [ Beri Kebenaran Semula ] │
└──────────────────────────────────────────────────────┘
Cuba Semula Sync menjalankan commitNow lagi. Ini adalah butang yang betul untuk diklik jika anda fikir rangkaian anda baru sahaja terputus seketika. Beri Kebenaran Semula GitHub menjalankan aliran OAuth lagi; klik ini jika tamat masa terus berulang, yang biasanya bermaksud token anda adalah masalah dan bukannya rangkaian.
Status kembali ke idle secara automatik selepas kira-kira 30 saat walaupun anda tidak mengklik apa-apa — sync akan cuba lagi pada perubahan fail seterusnya.
Penyelesaian Konflik
Konflik berlaku apabila fail yang sama telah diedit pada dua peranti sejak penyegerakan terakhir. Contoh: anda menulis perenggan dalam meetings/2026-06-03-standup.md pada komputer riba anda, kemudian kemudian mengedit perenggan yang sama pada mesin rakan. Apabila peranti kedua mendorong, GitHub menolak dorongan kerana sejarah menyimpang.
SeaMeet mengendalikan ini dengan:
- Menarik perubahan jauh dengan rebase
- Mengesan penanda konflik gabungan
- Memasuki keadaan
conflict - Memunculkan konflik dalam bar status bar sisi (yang menjadi boleh diklik) dan dalam panel konflik Sync Settings
Modal Penyelesaian Konflik
Mengklik bar status apabila sync dalam conflict membuka Modal Penyelesaian Konflik:
┌──────────────────────────────────────────────────────────┐
│ ⚠ Konflik Sync 1 / 2 [×] │
├──────────────────────────────────────────────────────────┤
│ │
│ "2026-06-03-standup.md" diubah pada peranti lain. │
│ │
│ ┌────────────────────────┐ ┌────────────────────────┐ │
│ │ ✎ Edit secara manual │ │ ✦ Gabung Ejen │ │
│ └────────────────────────┘ └────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────┘
Anda mempunyai dua pilihan:
Edit secara manual — membuka fail konflik dalam editor lalai sistem anda dengan penanda standard Git <<<<<<< / ======= / >>>>>>> di tempat. Edit fail untuk menyelesaikannya, simpan, kemudian kembali ke SeaMeet dan klik Selesai. SeaMeet membentangkan fail yang diselesaikan dan meneruskan rebase.
Gabung Ejen (BYOK Pro sahaja, memerlukan Ejen AI dikonfigurasikan) — menghantar kedua-dua versi kepada Ejen AI yang dikonfigurasi (GitHub Copilot atau Claude Code, lihat Bab 36: Panduan Persediaan BYOK) dan memintanya menghasilkan versi yang digabungkan yang mengekalkan niat kedua-dua pihak. Output ejen dibentangkan secara automatik; anda akan melihat pemutar "Menyelesaikan sync..." semasa rebase selesai.
Jika terdapat berbilang konflik sekaligus, modal menunjukkan pembilang (1 / 2, 2 / 2) dan anak panah chevron dalam panel konflik Sync Settings supaya anda boleh melangkah melalui mereka satu pada satu masa.
Pilihan "Simpan saya" / "Simpan mereka" / "Simpan kedua-duanya" muncul sebagai pilihan semula jadi apabila anda berada di dalam editor manual: tinggalkan hanya teks versi anda antara penanda, hanya teks versi jauh, atau silih ganti kedua-duanya. Butang Gabung Ejen secara berkesan melakukan "simpan kedua-duanya, secara pintar."
Bagaimana jika anda buat kesilapan? Konflik sync tidak merosakkan. Git menyimpan kandungan "kami" dan "mereka" yang asal dalam indeks, dan
getConflictVersions(filePath)boleh mendapatkan semula mana-mana pada bila-bila masa semasa penyelesaian. Anda tidak akan kehilangan kerja secara tidak sengaja.
Panel Tetapan Sync
Setelah anda disambungkan, Sync Settings (Tetapan → Sync) memberi anda satu skrin dengan semua di satu tempat:
┌─────────────────────────────────────────────────────────────┐
│ ✓ Sync & Backup │
│ Nota dan wiki anda secara automatik disegerakkan ke GitHub.│
│ Rakaman audio, rakaman video, dan tangkapan skrin tidak │
│ disegerakkan. │
├─────────────────────────────────────────────────────────────┤
│ ⓘ https://github.com/you/seameet-work-notes │
│ 🕒 Sync terakhir: 4 minit lepas │
├─────────────────────────────────────────────────────────────┤
│ Auto-sync [ ON ◉ ] │
│ Selang sync [ 5 min ▾ ] │
│ Cawangan main │
│ Disegerakkan terakhir 4 minit lepas │
├─────────────────────────────────────────────────────────────┤
│ Auto-sync pada perubahan [ ON ◉ ] │
│ Sync pada permulaan [ ON ◉ ] │
├─────────────────────────────────────────────────────────────┤
│ [ ⤓ Sync Sekarang ] │
├─────────────────────────────────────────────────────────────┤
│ [ ↗ Lihat di GitHub ] [ Putuskan Sambungan ] │
└─────────────────────────────────────────────────────────────┘
Kawalan, atas ke bawah:
- Auto-sync — togol utama untuk pemasa komit latar belakang. Off bermakna SeaMeet hanya mengkomit apabila anda klik Sync Now.
- Selang sync — seberapa kerap pemasa komit menembak. Pilihan adalah 1 / 5 / 10 / 30 minit. Lalai adalah 5 minit. Selang 1 minit adalah baik untuk pengambilan nota aktif; 30 minit baik untuk ruang kerja sedikit-edit di mana anda lebih suka menggabungkan komit.
- Cawangan — cawangan Git yang SeaMeet segerakkan. Hampir selalu
main. Baca-sahaja dalam UI. - Disegerakkan terakhir — cap masa relatif dorongan berjaya terakhir.
- Auto-sync pada perubahan — apabila hidup, dorongan berlaku dengan serta-merta selepas setiap komit tempatan (kes biasa). Apabila mati, SeaMeet mengkomit secara tempatan tetapi hanya mendorong apabila anda klik Sync Now. Berguna jika anda mahu menggabungkan dorongan (cth. pada sambungan bermeter).
- Sync pada permulaan — apabila hidup, SeaMeet menarik dari GitHub detik aplikasi dilancarkan. Disyorkan melainkan anda mempunyai sambungan yang sangat perlahan.
- Sync Now — paksa kitaran komit-dan-dorong segera. Tidak menunggu pemasa. Berguna sebelum menutup komputer riba anda.
- Lihat di GitHub — membuka repo dalam pelayar anda.
- Putuskan Sambungan — mengosongkan token OAuth yang disimpan, memadam fail token yang disulitkan, dan mengeluarkan
origindari repo Git tempatan anda. Fail Markdown tempatan anda dan sejarah Git tidak disentuh — hanya pautan ke GitHub yang diputuskan.
Apa Yang Disegerakkan (dan Apa Yang Tidak)
Ini didokumenkan dalam indeks bahagian, tetapi ia berbaloi untuk diulang di sini:
| Disegerakkan | Tidak disegerakkan |
|---|---|
Nota (fail .md) | Rakaman audio (.webm, .mp3) |
Halaman wiki (fail .md) | Rakaman video (.webm, .mp4) |
| Manifest rakaman (JSON metadata) | Tangkapan skrin (.png, .jpg) |
| Ringkasan dan transkrip AI | Penjanaan AI yang dicache |
| Graf pautan wiki | Tetapan aplikasi |
.gitignore | Keadaan calar editor |
.gitignore yang SeaMeet tulis mengecualikan semua kategori binari yang besar. Ini disengajakan: repo peribadi percuma GitHub dicantum pada 1 GB, dan video 30 minit akan memakan itu sahaja. SeaMeet menyimpan media pada cakera tempatan anda dan menyegerakkan hanya Markdown yang ringan.
Jika anda mahu sync media penuh, itu adalah peringkat Sync Pro — lihat Bab 35.
Penyelesaian Masalah
"Kebenaran gagal" sebaik sahaja mengklik Set Up GitHub Sync
Punca dan pembetulan:
- Penyekat pop-up — jika tiada tetingkap pelayar dibuka, OS atau pelayar anda mungkin telah menyekat pelancaran. Klik Set Up GitHub Sync lagi dan sahkan sebarang gesaan pop-up.
- Anda menafikan kebenaran GitHub App — kembali melalui aliran dan terima skop
contents: write+administration: write. Tanpaadministration: writeSeaMeet tidak boleh mencipta repo untuk anda. - Ralat ketidakpadanan keadaan — tutup mana-mana tetingkap SeaMeet lain yang mungkin berlumba pada aliran OAuth yang sama, kemudian cuba lagi.
Ralat "Kebenaran repo" semasa persediaan
Ralat berbunyi seperti "GitHub App mempunyai kebenaran 'contents: read', tetapi memerlukan 'contents: write'." Ini bermakna anda memasang versi App yang lebih lama.
Pembetulan:
- Buka github.com/settings/installations
- Cari SeaMeet dalam senarai dan klik Configure
- Di bawah Repository permissions, tukar Contents dan Administration kepada Read and write
- Simpan, kemudian nyahpasang dan pasang semula aplikasi — GitHub hanya menerapkan kebenaran baharu pada pemasangan semula
- Jalankan semula Set Up GitHub Sync dalam SeaMeet
"Tidak boleh menjangkau GitHub" / sync terperangkap pada "Offline"
Kegagalan rangkaian. SeaMeet akan cuba lagi secara automatik apabila:
- Anda membuat sebarang perubahan fail (mencetuskan percubaan cuba semula segera)
- 60 saat berlalu dari cuba semula terakhir
Jika rangkaian anda kembali dan sync masih menunjukkan Offline selepas beberapa minit:
- Klik Sync Now untuk memaksa cuba semula
- Jika itu tamat masa: periksa firewall anda tidak menyekat github.com
- Sebagai usaha terakhir, mulakan semula SeaMeet — sync permulaan akan menembak pada pelancaran
Sync terperangkap pada "Pending"
Ini biasanya bermakna pemasa auto-komit belum menembak. Secara lalai ia menembak setiap 5 minit. Tidak mahu menunggu? Klik Sync Now.
Jika Sync Now tidak memindahkan sync melepasi Pending, periksa:
- Adakah anda pada peringkat pengebilan yang termasuk sync? Buka Sync Settings — jika anda melihat sepanduk langgan, sync dilumpuhkan pada lapisan kelayakan.
- Adakah terdapat perubahan yang belum dikomit di luar pokok Markdown? Pemasa auto-komit hanya menembak apabila
_pendingChangesbukan kosong.
"Saya melihat kad token-expired"
Ini adalah hujung kitaran hayat penyegaran OAuth yang dijangka — token refresh 6 bulan anda tamat tempoh, atau anda membatalkan GitHub App, atau anda menukar kata laluan GitHub anda (yang membatalkan semua token OAuth).
Pembetulan: klik Beri Kebenaran Semula GitHub dalam kad. Aliran adalah sama seperti persediaan awal tetapi melangkau langkah pemasangan GitHub App (anda sudah memasangnya). Mengambil masa kira-kira 10 saat.
Panel penyelesaian konflik tidak akan ditutup
Panel hanya ditutup apabila semua konflik dalam senarai diselesaikan. Jika anda melihat pembilang (1 / 3), gunakan anak panah chevron dalam panel konflik Sync Settings untuk melangkah melalui fail yang tinggal. Setiap satu memerlukan penyelesaian eksplisit (edit manual + Selesai, atau Gabung Ejen).
Jika panel berkeras terdapat konflik tetapi anda tidak melihat sebarang penanda dalam fail anda, klik Sync Now — keadaan conflict basi akan dikosongkan pada percubaan sync berjaya seterusnya.
Gelung "Push ditolak"
Jika sync berganti-ganti antara pushing dan pulling berulang kali, GitHub menolak dorongan anda kerana jauh terus bergerak ke hadapan. Ini boleh berlaku jika:
- Contoh SeaMeet lain berjalan terhadap repo yang sama dan mendorong lebih pantas daripada yang ini boleh mengejar — tutup contoh lain.
- Seseorang (atau beberapa alat) mengkomit ke repo GitHub dari luar SeaMeet — jeda alat luaran sehingga klon tempatan anda mengejar.
Nota Keselamatan
Di mana token OAuth disimpan: dalam keychain OS anda melalui API safeStorage Electron. Pada Windows itu adalah DPAPI, pada macOS ia adalah Keychain Services, pada Linux ia adalah libsecret. Blob yang disulitkan ditulis ke <userData>/github-token.enc dengan mod fail 0o600. Fail menyimpan token akses, token refresh, cap masa tamat tempoh, dan ID pelanggan GitHub App, rahsia pelanggan, dan slug.
Apa yang tidak disimpan dalam argv: token OAuth tidak pernah dihantar sebagai argumen -c http.extraHeader=... ke git, kerana argv kelihatan kepada pengguna lain melalui ps aux. Sebaliknya pengepala Authorization disuntik melalui pemboleh ubah persekitaran GIT_CONFIG_PARAMETERS, yang peribadi kepada proses. Pengguna lain pada mesin yang sama tidak boleh melihat token anda.
Apa yang akhirnya pada cakera dalam repo: fail Markdown biasa. Tiada token, tiada rahsia, tiada kelayakan. .gitignore mengecualikan fail media, tetapi anda masih perlu mengelakkan menampal rahsia ke dalam badan nota — mereka akan menyegerakkan.
Membatalkan akses: untuk segera memotong akses SeaMeet kepada repo, nyahpasang SeaMeet GitHub App di github.com/settings/installations. Percubaan sync seterusnya akan gagal dengan token-expired dan SeaMeet akan mengosongkan token tempatannya. Nota tempatan anda tidak disentuh.
Rujukan Pantas
┌─────────────────────────────────────────────────────────────┐
│ GITHUB SYNC │
│ Rujukan Pantas │
├─────────────────────────────────────────────────────────────┤
│ Buka Sync Settings │ Tetapan → Sync │
│ Persediaan kali pertama│ Klik "Set Up GitHub Sync" │
│ Skop yang diperlukan │ contents: write, admin: write │
│ Penamaan repo │ Satu repo peribadi setiap ruang kerja│
├─────────────────────────────────────────────────────────────┤
│ Selang sync lalai │ 5 minit (1 / 5 / 10 / 30) │
│ Paksa sync │ Butang "Sync Now" │
│ Auto-sync pada push │ Hidup (togol dalam Sync Settings) │
│ Sync pada permulaan │ Hidup (togol dalam Sync Settings) │
├─────────────────────────────────────────────────────────────┤
│ Margin penyegaran OAuth│ 5 minit sebelum tamat tempoh │
│ Tamat masa perintah Git│ 60 saat (AbortController) │
│ Had auto-cuba semula │ 5 percubaan, backoff eksp. │
│ Storan token │ Keychain OS (safeStorage) │
├─────────────────────────────────────────────────────────────┤
│ UI konflik │ Klik bar status apabila dalam konflik│
│ Selesaikan manual │ Edit penanda → Selesai │
│ Gabung Ejen │ BYOK Pro + Ejen AI dikonfigurasikan │
├─────────────────────────────────────────────────────────────┤
│ Putuskan sambungan │ Sync Settings → Putuskan Sambungan │
│ Batalkan dari GitHub │ github.com/settings/installations │
│ Lihat repo │ Pautan "Lihat di GitHub" │
└─────────────────────────────────────────────────────────────┘
Dikemas kini terakhir: 2026-06-04
← Bab 37: Pembekal GitHub Copilot | (hujung manual — kembali ke Indeks)
Published: