Move code between repositories in one clean commit

Sync branches, deploy ZIP archives and clone repositories without dragging old history along. Everything runs inside your browser, talking straight to GitHub.

Token never leaves your device One atomic commit Works on phone & desktop
1Connect
2Configure
3Run
GitHub personal access token Create token

Classic token: tick repo. Fine-grained token: Contents (read & write) and Administration (write) if you want to create new repositories.

Three ways to move code

Pick the mode that matches what you have in hand. All of them finish with a single commit.

Repo Sync

Compare a source branch with a target branch and push only the difference.

  • Skips files that are already identical
  • Keeps the target’s history
  • Optional mirror of deletions

ZIP Deploy

Unpack a ZIP in your browser and publish it to a new or existing repository.

  • Drag-and-drop or paste a link
  • Detects unchanged files by hash
  • Strips the wrapper folder for you

Clean Clone

Copy the current files of any repository into a brand-new one, with no history.

  • Fresh, single-commit history
  • Works with any public repo
  • Refuses to overwrite an existing name

How it works

GitGhost uses GitHub’s Git Data API, the same building blocks Git itself uses, so nothing is cloned to disk.

1

Read and compare

It lists the file tree of the source and the target, then works out which files are new, changed or identical.

2

Upload what changed

Only new or modified files are uploaded as blobs, a few at a time, with automatic retries and rate-limit waiting.

3

Commit once

A single tree and commit are created, then the branch is updated. Any failure before this point leaves your repo untouched.

Built to be safe and fast

Local-only token

The token is sent only to api.github.com. There is no backend and nothing is logged anywhere else.

Dry-run preview

See exactly which files would be added, updated or deleted before you commit to anything.

Parallel uploads

Files upload concurrently and are skipped when their content hash already matches the target.

Resilient requests

Network blips, server errors and GitHub rate limits are retried automatically with sensible waits.

Stop any time

Cancel a running job. Because the commit is the last step, a stopped run changes nothing.

Exportable logs

Copy or download the full execution log for debugging or record keeping.

Questions

Is my token safe?

It stays in your browser and is only sent to GitHub’s API. If you leave “Remember me” ticked it is kept in local storage for one hour, then removed. For extra safety use a fine-grained token limited to the repositories you need, and revoke it when finished.

Which token permissions are needed?

Classic tokens need the repo scope. Fine-grained tokens need Contents: read & write on the target, plus Administration: write if you want GitGhost to create repositories.

Does Clean Clone keep commit history?

No. It copies the files from the latest commit of the chosen branch into a new repository and creates one fresh commit with no parents. Use Repo Sync if you want to add to existing history.

Will ZIP Deploy delete files already in my repo?

Only if you tick “Mirror deletions”. By default it adds new files and updates changed ones, leaving everything else alone.

Why did my ZIP link fail to download?

Browsers can only fetch files from servers that allow cross-origin requests. If yours doesn’t, download the ZIP to your device and drop it into the upload box instead.

Are there size limits?

Single files above 50 MB are skipped and reported as errors. Very large repositories may be truncated by GitHub’s tree listing, and GitHub’s API allows 5,000 requests per hour, so huge jobs can take a while. GitGhost waits automatically if it hits the limit.