Skip to content

yangflow/gitrelay

Repository files navigation

GitRelay

Mirror any Git repository to any other Git repository, automatically — from your Mac.

GitRelay is a native macOS app that manages one-way mirror syncs between Git hosting platforms. Point it at a source and a destination, choose a schedule, and it handles the rest: git clone --mirror, git fetch --prune, git push --mirror, all running quietly in the background while you work.

It supports any combination of GitLab, GitHub, Gitea, Gitee, Bitbucket, or self-hosted Git servers — SSH Agent, SSH key, and HTTPS token auth included.

中文


Features

  • Multi-repo sidebar — manage any number of repo pairs from one window
  • Full mirror sync — all branches and tags, one direction, src → dst
  • Destructive push protection — dry-runs mirror pushes and blocks target ref deletes or forced updates by default
  • Sync health dashboard — sidebar and menu bar summaries for today's success, failure, and not-run counts
  • Scheduled sync — per-repo frequency: manual, 15 min, 30 min, 1 h, 1 day
  • Auth flexibility — SSH Agent, SSH key path, or HTTPS token (stored in macOS Keychain)
  • Menu bar quick access — status at a glance, trigger sync without opening the main window
  • Sync log — per-run log with credential redaction and error classification
  • Commit delta — shows how many commits src is ahead of dst before each push

Requirements

  • macOS 14 (Sonoma) or later
  • Apple Silicon or Intel
  • git installed (/usr/bin/git, /usr/local/bin/git, or /opt/homebrew/bin/git)

Install

Homebrew

brew tap yangflow/tap
brew install --cask gitrelay

Download DMG

Go to Releases and download the latest GitRelay-x.y.z.dmg. Open it and drag GitRelay to Applications.

Unsigned build: right-click → Open on first launch, or run xattr -cr /Applications/GitRelay.app

Build from source

git clone https://github.com/yangflow/gitrelay.git
cd gitrelay
open gitrelay.xcodeproj

Select the gitrelay scheme, press ⌘R.


Usage

  1. Click + in the toolbar or the empty-state button to add a repo pair.
  2. Enter a name, the source URL, and the destination URL.
  3. Choose the auth method for each side — SSH Agent requires no extra setup if ssh-agent is already running.
  4. Set a sync frequency and click Add.
  5. GitRelay clones the source as a bare mirror on first sync, then fetches and pushes on every subsequent run.

The menu bar icon shows aggregate status: a warning triangle if any repo has a sync failure.


Data locations

What Where
Repo configs ~/.local/share/gitrelay/repos.json
Mirror clones ~/.local/share/gitrelay/mirrors/<uuid>/
HTTPS tokens macOS Keychain

Regenerate app icon

The icon PNGs are generated by a Swift script and committed to the repo. To regenerate them (e.g. after a palette change):

swift scripts/generate-icon.swift

License

MIT — see LICENSE.

About

Mirror any Git repository to any other Git repository, automatically — from your Mac.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors