From GitHub to Forgejo.
Your history, issues, and pull requests import over the GitHub API. Plan Actions and the GitHub-only surfaces deliberately, and keep an exit door open.
What moves for you
Forgejo’s built-in migrator pulls from GitHub over its API: not just git history but the
metadata around it. Generate a GitHub token that can read the repositories you are importing
(private repos need classic repo scope or a fine-grained token with equivalent read access), point the migration at the source, and
let it run.
Git history, branches, tags
The whole repository, not a shallow copy. Every branch, tag, and commit comes across through Forgejo’s built-in migrator over the GitHub API.
Issues and pull requests
Issues, pull requests, comments, labels, and milestones import with their metadata, so the conversation history moves with the code.
Releases and wiki
Tagged releases and wiki pages transfer where the GitHub API exposes them, so published artifacts and docs are not left behind.
What needs manual steps
The repository content moves cleanly. The GitHub-specific scaffolding around it is configuration, not content, so you recreate it on the new forge. None of it is a surprise if you plan for it before cutover.
Actions workflows
Forgejo Actions uses a format close to GitHub Actions, so most workflows port with small edits. Marketplace actions pinned to GitHub-hosted runners or org secrets need review. See the CI page for the detail.
Org-level settings
Branch protection, required checks, environments, and CODEOWNERS enforcement are recreated on the new forge. They are configuration, not repository content, so the import does not carry them.
GitHub-only surfaces
Projects (boards), Discussions, code scanning, Dependabot, and Pages are GitHub features with no one-to-one import. Plan replacements or exports for the ones you rely on.
Integrations and webhooks
OAuth apps, GitHub Apps, deploy keys, and webhooks point at github.com. Repoint or re-create each against your Fjord instance after cutover.
Why teams make the move
A dedicated forge you own, priced per instance rather than per seat, with written
no-AI-training terms and single-tenant isolation. The Forgejo REST API is what the fj CLI speaks, so your tooling has a clean target. Team and Pro add dedicated runners so CI runs
on capacity that is yours.
And if you ever leave
Your data exports in the upstream Forgejo format any time, per-repository or as a full forgejo dump. The same openness that lets you come in lets you go out. No lock-in is the point.
