github-gitlab-mirrorlisted
Install: claude install-skill AgentsMesh/AgentsMesh
# GitHub to GitLab Mirror
GitHub `main` is the single source of truth. GitLab exists to build and deploy
the same commit internally.
## Safety Rules
- Discover both remotes from their URLs; do not assume they are named `origin`
and `gitlab`.
- Never merge, cherry-pick, or push GitLab-only commits into GitHub.
- A fast-forward update to GitLab may proceed after verification.
- Rewriting a divergent GitLab branch requires explicit user authorization and
an exact `--force-with-lease` expectation.
- Do not change the local branch or working tree to mirror remote refs.
## Status
1. Fetch both authoritative refs:
```bash
git remote -v
git fetch <github-remote> main
git fetch <gitlab-remote> main
```
2. Record both SHAs and show commits unique to either side:
```bash
git rev-parse <github-remote>/main
git rev-parse <gitlab-remote>/main
git log --oneline <gitlab-remote>/main..<github-remote>/main
git log --oneline <github-remote>/main..<gitlab-remote>/main
```
3. Classify the relationship:
- Equal: already mirrored.
- GitLab is an ancestor of GitHub: safe fast-forward.
- GitHub is an ancestor of GitLab: GitLab contains mirror-only commits.
- Neither is an ancestor: the remotes diverged.
## Synchronize
For a verified fast-forward:
```bash
git push <gitlab-remote> <github-remote>/main:refs/heads/main
```
For a GitLab-ahead or divergent branch, stop and display the GitLab-only
commits. An explicit request to restore GitLab a