My goal was simple: make GitHub mirroring dead simple and invisible. Set it up once, then forget it.
I wanted "push to GitHub" to also mirror to another provider (GitLab/Bitbucket/Gitea/self-hosted) without changing my day-to-day workflow.
How it works:
- ge add <mirror-url> installs a local pre-push hook
- normal git push origin ... still works as usual
- GitEcho captures pushed refs and mirrors them in the background
- it uses existing SSH keys / git credential helper (no new token system)
Install:
uv tool install gitecho
Quick start:
ge add git@gitlab.com:you/repo.git
git push origin main
Why not just add another remote and push yourself?
You can, and that works. I am lazy and forgetful. I wanted something I could set up quickly and never think about again.
GitEcho packages the boring parts: hook setup, background push, non-interactive auth behavior, and logs (`ge logs`).
Current behavior:
- safety-first by default: it checks origin refs before mirror push
- if origin likely rejected, mirror push is skipped and logged
- optional best-effort mode via `GITECHO_CONTINUE_ON_ORIGIN_REJECT=1`
Planned next:
- auto-create mirror repos on providers
- watch a folder and auto-setup all repos (instead of per-repo setup)
Repo: https://github.com/prashantsengar/GitEcho
Mirrored at: https://gitlab.com/prashantsengar/gitecho