GitHub sync

Keep the code in your own repository

Push what mypage built into your repo, and pull back what your developer changed there. Both directions. Tokens are never written to disk.

SyncTwo-way
  • push and pull
  • sync states
  • named conflict causes
  • tokens stored
  • opened on request
  • webhook signatures

Conflicts stop the sync and name the files instead of guessing a merge.

What this is

The code was always yours.

Building here should not mean the source lives here forever. Connect a repository and the generated files land in it, branch and all. Hand the project to a developer, wire your own CI, or move to another tool later — none of that requires our permission or an export ticket.

How to use it

Connect, choose, sync.

Scope is decided up front: public repositories only, or private ones too.

  1. Connect the account

    GitHub asks for consent in its own window. You choose whether private repositories are included.

  2. Choose repo and branch

    Pick from the repositories you already have, or create a new one for this project.

  3. Push and pull

    Sync in either direction, and open a pull request straight from the panel when you want review.

What is in the code

How the sync reports itself.

Sync state is not a spinner. It is one of five values, and conflicts carry a reason.

  1. Five sync states

    In sync, ahead, behind, conflicted, disconnected — each shown with what to do next.

  2. Six conflict causes

    Local edits, content conflict, rewritten history, head mismatch, deleted branch, missing credential.

  3. No token at rest

    OAuth tokens live in an in-memory vault only. Not in the database, not on disk, not in logs.

  4. Least scope

    Public-only access asks for public_repo; private access asks for repo. Hook creation is requested alongside.

  5. Pull requests

    A synced branch can be turned into a pull request without leaving the panel.

  6. Signed webhooks

    Inbound GitHub events are verified against a per-project secret before they are believed.

What it will not do

Where it stops and asks you.

Sync is the place where guessing does the most damage, so it guesses least.

It will not auto-merge a conflict

You get the conflicting paths and the reason, and the sync halts. Which side wins is a human decision.

Rewritten history is not repaired

A force push that rewrites the branch is reported as a conflict, not silently reconciled.

You may need to reconnect

Because tokens are never persisted, a server restart ends the session. Safer, and occasionally inconvenient.

The public app registration is pending

Real pushes to a real repository were verified. Publishing an official GitHub App is still an owner-side step.

Next

Owning the repository pairs naturally with owning the address the site answers on.