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.