Simple, transparent GitHub repository backups.
GitBack discovers repositories from GitHub, maintains local mirrors, and creates compressed snapshots for long-term storage. It is designed to run unattended while remaining easy to inspect, troubleshoot, and recover from.
-
Backup Public and private GitHub repository
-
Local Git mirror synchronization
-
Compressed snapshots (
tar + zstd) -
SHA256 checksum for integrity check
-
Structured JSON logging
-
Health reporting
-
Environment diagnostics
-
No database
-
No daemon
-
No proprietary formats
go install github.com/flarexes/gitback/cmd/gitback@latestgit clone https://github.com/flarexes/gitback.git
cd gitback
go build -o gitback ./cmd/gitbackRequired tools:
-
git
-
tar
-
zstd
Verify your environment:
gitback doctorgitback initCreates configuration and validates GitHub authentication.
gitback discoverDiscovers repositories accessible to the configured GitHub account.
gitback syncCreates and updates local Git mirrors.
gitback snapshotCreates a compressed archive containing all mirrored repositories.
Force mode:
gitback snapshot --forceContinues snapshot creation even if repository sync was failed.
gitback healthDisplays repository status, snapshot information, storage usage, and recommendations.
gitback doctorPerforms environment and configuration checks. Recommendation after initialization, gitback init.
GitBack supports either a Classic Personal Access Token or a Fine-Grained Personal Access Token.
Scope:
repo
Repository Access:
All repositories
Permissions:
Contents: Read-only
Metadata: Read-only
Any one token type is required.
Configuration:
~/.config/gitback/
└── config.yaml
Data:
~/.local/share/gitback/
├── mirrors/
├── snapshots/
└── state/
├── github.token
├── repositories.txt
└── mirrors.json
Runtime state:
~/.local/state/gitback/
├── gitback.log
└── gitback.lock
GitBack produces structured JSON logs.
Example:
{
"timestamp": "2026-06-07T10:00:00Z",
"run_id": "7b3f4a1c",
"level": "info",
"event": "sync_completed"
}Snapshots are stored as:
YYYY-MM-DDTHH-MM-SSZ.tar.zst
Each snapshot includes:
mirrors/
state/mirrors.json
Snapshot retention can be configured to automatically remove older snapshots.
Example:
snapshot_retention: 30Retains the newest 30 snapshots. Retention is disabled by default (0 or < 1).
GitBack also generates SHA256 checksum files alongside snapshots.
Typical unattended workflow:
gitback discover
gitback sync
gitback snapshot --forceCan be scheduled using:
-
cron
-
systemd timers
-
CI/CD pipelines
-
Windows and macOS support
-
Multi-worker synchronization
-
Git retry and backoff support
-
GitHub organization support
-
Repository filtering
Bug reports, feature requests, and pull requests are welcome.
Please keep contributions aligned with the project's core principles:
-
Simplicity
-
Transparency
-
Reliability
BSD 3-Clause License.
See LICENSE for details.
GitBack is built to solve a straightforward problem: reliably backing up Git repositories without unnecessary complexity.
Many existing solutions provide hosted services, dashboards, integrations, and management platforms. Those tools provide real value and are often the right choice for teams that need them.
However, many individuals, open source maintainers, and small teams simply need dependable repository backups they can run themselves.
GitBack focuses on that use case using standard Git mirrors, standard archive formats, and straightforward recovery procedures.
If GitBack disappears tomorrow, your backups remain usable with standard tools.
The project is still young and will continue to evolve, but simplicity, reliability, and operational transparency will remain the primary design goals.