GitHub alternatives: where to move your code, and how to migrate without losing history

Seven forges reviewed, one for each reason to leave, plus an eight-step migration plan.

The short answer: GitLab if you want everything in one place and the most complete GitHub importer. Bitbucket if your team already runs on Jira and wants the cheapest paid seat. Gitea or Forgejo if you want to self-host on a small box and stop counting CI minutes. Azure DevOps if you're a .NET shop on Azure and the vendor isn't your problem.

One thing before you pick. Leaving GitHub isn't about the Git repo. That copies in seconds. It's about your Actions workflows, which no forge converts for you, and about the CI bill on the other side. We compared all seven on those two points, with 2026 list prices.

Romain CochardCEO of Hack'celeration
Updated 20267forges compared8migration steps2026prices checked

The ranking is editorial: a sponsored spot is always labeled on its card, and no affiliate link changes a score.

The real reasons

Why teams are moving off GitHub, and what it costs them

Developers complained about GitHub for years and stayed anyway. In 2025 and 2026, some well-known projects actually left. These are the six reasons that keep coming up.

Actions reliability

Zig moved to Codeberg in 2025 and led with CI. A bug in the runner's safe_sleep.sh script, which could pin a CPU at 100%, stayed open for most of that year. If your pipelines are your daily workbench, this is the most concrete reason to look around.

The self-hosted runner fee scare

In 2025, GitHub announced a $0.002 per minute platform fee for self-hosted runners on private repos. After the backlash it was postponed, not dropped, with GitHub saying it wants to cover its "real costs". Today the official docs still list self-hosted runners as free. But if you run thousands of minutes a month on your own hardware, you now know the rule can move.

Copilot everywhere

Gentoo left for Codeberg in 2026, citing "continuous attempts to force Copilot usage". Copilot now has a free tier (2,000 completions a month) and ships inside Enterprise. For a project that doesn't want its code and contributors steered into Microsoft's AI assistant, that matters.

GitHub folded into Microsoft CoreAI

In 2025 Microsoft moved GitHub into its CoreAI group, and CEO Thomas Dohmke stepped down. For a slice of the open source world, that was the moment complaining turned into leaving. GitHub reads less like a neutral home and more like part of an AI strategy.

Logged-out friction

Code search and some discussions require you to be signed in. For maintainers who want their project readable by anyone, from any browser, that's one more nudge toward a forge with fewer walls.

What you give up

Here's the honest cost. GitHub is where developers are. Zig was raising more than $170,000 a year through GitHub Sponsors in 2024. One open source company that moved from GitLab to GitHub got 1,000 stars in three months, a number that took over a year on GitLab. Pages, the Actions marketplace and Copilot don't come with you. That's why so many teams keep a GitHub mirror.

The 7 alternatives

GitHub alternatives, forge by forge

For each one: why move there, who it fits, the catch, what comes over from GitHub, and what it costs in 2026. All prices are list prices in US dollars unless noted.

01

GitLab: the full platform, with the best importer

Most complete

Why move to GitLab. It's the only forge that covers everything GitHub does in one product: repos, built-in CI/CD, issues, boards, security scanning and a package registry. And you pick where it runs. Use GitLab.com, or run Self-Managed on your own servers. Self-Managed Free has no CI minute cap, because the runners are yours.

Who it's for. Product teams that want one tool for code, pipelines and planning, and companies that want the option to bring their forge in-house later.

Who it's not for. An eight-person team on private repos that wants to stay free on GitLab.com. The Free tier caps private groups at 5 users.

The catch. Free on GitLab.com means 5 users, 400 compute minutes a month and 10 GiB of storage. Open source maintainers have pushed back on that minute cut, and on being asked for a credit card to use shared runners. Premium is $29 per user a month, billed yearly, with 10,000 minutes. That's more than seven times GitHub Team. Ultimate is quote-only.

How to migrate. GitLab's GitHub importer is the most thorough you'll find: branches, large files (Git LFS), issues, pull requests with comments and reviews, labels, milestones, wiki, releases, branch protection rules and collaborators. It skips required status checks, organizations (it works project by project) and outside collaborators. Markdown attachments are opt-in. You need a classic personal access token (PAT) with repo scope, plus read:org for org repos. Your Actions workflows don't convert: you rewrite them as .gitlab-ci.yml.

Worth knowing. Extra minutes cost $10 per 1,000. If one busy repo blows through 400 minutes, a pack is usually cheaper than putting the whole team on Premium.

Free
5 users, 400 CI minutes
Paid
Premium $29/user/mo
Best for
all-in-one teams
Catch
Premium is pricey
See GitLab plans →
02

Bitbucket: the budget pick for Jira teams

Cheapest per user

Why move to Bitbucket. If your team already plans in Jira and documents in Confluence, Bitbucket plugs straight in: branches, commits and pull requests link to tickets. It's also the cheapest per-user paid plan here, at $3.65 per user a month on Standard and $8 on Premium.

Who it's for. Atlassian shops watching the budget.

Who it's not for. Public projects chasing contributors. The community is on GitHub, not Bitbucket.

The catch. Free covers 5 users but only 50 build minutes a month and 1 GB of LFS storage. Minutes scale with runner size: a 2x runner burns them twice as fast. Another 1,000 minutes, or 100 GB, costs $10 a month.

How to migrate. Bitbucket imports by Git URL. You get the code and its history, not GitHub issues or pull requests. In Atlassian land, tickets live in Jira. If Jira is on your way-out list too, read our guide to switching from Jira first.

Free
5 users, 50 build minutes
Paid
Standard $3.65/user/mo
Best for
Jira teams
Catch
imports code only
See Bitbucket plans →
03

Gitea: lightweight self-hosting

Lightest to run

Why move to Gitea. Gitea is an open source forge that feels a lot like GitHub, minus the weight. It runs on a small VM, it's free to self-host, and your data stays on your box. Its built-in migrator pulls a GitHub repo along with issues, pull requests, labels, milestones and releases.

Who it's for. Small engineering teams that can keep a server patched, and companies that want an internal forge without per-seat pricing. Gitea Enterprise adds vendor support on a yearly per-user subscription, with a 30-day trial.

Who it's not for. Teams with nobody to own backups, upgrades and security. Self-hosting is free in license, not in hours.

The catch. Gitea Cloud, the hosted version, has no public price. Gitea's own code is hosted on GitHub: worth knowing if independence is why you're leaving.

How to migrate. Start a new migration, pick GitHub, paste the repo URL and a token, tick what to bring. Mirror mode is a gentle way out: Gitea re-syncs from GitHub every 8 hours by default while your team switches over. Gitea Actions is close to GitHub Actions syntax, but check every workflow. Not every marketplace action will be there.

Free
self-hosted, unlimited users
Paid
Enterprise, yearly plan
Best for
internal forge
Catch
you run the server
Explore Gitea →
04

Azure DevOps: solid for .NET, but it's still Microsoft

Microsoft stack

Why move to Azure DevOps. If you're leaving GitHub over price or features rather than the vendor, Azure DevOps is a serious option: Git repos, Pipelines, Boards, and Test Plans, which GitHub doesn't offer. The first 5 Basic users are free, then it's $6 per user a month.

Who it's for. .NET teams already on Azure, and QA-heavy teams that need Test Plans ($52 per user a month with Basic).

Who it's not for. Anyone leaving because of Microsoft. Azure DevOps and GitHub share an owner. You change tools, not vendors.

The catch. You get one free Microsoft-hosted parallel job with 1,800 minutes a month. Each extra hosted job is $40 a month. One self-hosted job is free with unlimited minutes, and each extra one is $15 a month. Do the math on parallel jobs, not minutes: that's what limits a busy team.

How to migrate. Importing a Git repo takes a few clicks. Pipelines are YAML, but not Actions YAML. Plan a full rewrite.

Free
5 users, 1,800 CI minutes
Paid
$6/user/mo
Best for
.NET on Azure
Catch
same owner as GitHub
See Azure DevOps pricing →
05

Forgejo: Gitea, run by the community

Community-governed

Why move to Forgejo. Forgejo forked from Gitea in 2022, when part of the community wanted governance with no company behind it. It now lives under Codeberg e.V., a German nonprofit. In daily use, you get Gitea's light footprint and the same built-in GitHub migration, issues and pull requests included.

Who it's for. Teams that want to self-host fully free software run by a nonprofit. Some users report a Forgejo instance on a Raspberry Pi feeling snappier than GitHub for their workload.

Who it's not for. Teams hoping to drop in their Actions workflows unread.

The catch. Forgejo's own docs say its Actions aim for "familiarity, not compatibility". The default image is Debian with Node, not Ubuntu, so a step that assumes an Ubuntu package can fail. The permissions and continue-on-error keys are ignored. OIDC (signing in to your cloud without stored passwords) needs enable-openid-connect.

How to migrate. Same path as Gitea, then go through every file in .github/workflows. Worth knowing: run Forgejo runners in LXC containers to isolate jobs, which the docs support. Teams that moved CI onto their own hardware report pipelines going from 40 to 10 minutes.

Free
free software, self-hosted
Paid
no license fee
Best for
community-run self-hosting
Catch
Actions need tweaks
Explore Forgejo →
06

Codeberg: the nonprofit home for open source

Free for FOSS

Why move to Codeberg. It's where Zig and Gentoo went. Codeberg is a Forgejo instance run by Codeberg e.V., a nonprofit with servers in Berlin. As a nonprofit, it has no investors. After Zig's move, membership jumped from 600 to more than 1,200.

Who it's for. Open source projects that want a European, community-run home.

Who it's not for. Companies with private code. Codeberg is for free and open source software only. There's no commercial private hosting, and you can't pay your way into an exception. Contributors to free software can keep private repos up to 100 MB.

The catch. Past 750 MiB of Git data or 1.5 GiB of packages, you have to ask. CI (Woodpecker) is also on request. There are no pull mirrors. And some user reports mention false positives from the anti-bot protection.

How to migrate. Use the Forgejo migrator for repo, issues and PRs. Since pull mirrors aren't offered, flip it: push-mirror from Codeberg to GitHub so your project stays discoverable there.

Free
yes, for open source
Paid
none, optional membership
Best for
FOSS projects
Catch
no private commercial code
Join Codeberg →
07

SourceHut: minimal, email-driven, no JavaScript

For purists

Why move to SourceHut. SourceHut works without JavaScript and without tracking, built around an email workflow: contributions arrive as patches sent to a mailing list, the way the Linux kernel works. Pricing is $4, $8 or $12 a month, and all three tiers get the same features. You choose what you pay.

Who it's for. Developers and small projects who like patch-by-email and want a lean forge funded by its users.

Who it's not for. Teams used to browser-based pull requests and reviews. The culture shift is real, and the UI looks dated.

The catch. It's still a public alpha. You pay to host projects and to use builds.sr.ht for CI. Contributors pay nothing, and financial aid exists.

How to migrate. git push your repo. Issues and PRs stay on GitHub, so export what matters first.

Free
contributing only
Paid
$4, $8 or $12/mo
Best for
email workflow, no JS
Catch
alpha, dated UI
See SourceHut pricing →
Comparison

The 7 alternatives side by side

Left column: what you get without paying. Right column: the first paid price, and what comes over from GitHub.

Monthly cost for a 10-person team: GitHub Team $40, GitLab Premium $290, Bitbucket Standard $36.50, Azure DevOps $30 (5 free, then 5 × $6), Gitea and Forgejo $0 plus your server.

If you're in the UK or EU and want your data in Europe, look at Codeberg (servers in Berlin, open source only), GitLab Self-Managed on your own European hosting, or a managed GitLab host with a European region.

Free tierFirst paid plan and migration
GitHubWhere you're starting$0, about 2,000 Actions minutesTeam $4/user/mo, Enterprise $21
GitLab5 users, 400 min, 10 GiBPremium $29; imports issues, reviews, wiki
Bitbucket5 users, 50 build minutesStandard $3.65; imports code only
GiteaSelf-hosted, no capsEnterprise yearly; imports issues and PRs
Azure DevOps5 users, 1,800 min$6/user; imports the Git repo
ForgejoSelf-hosted, no capsNo license fee; imports issues and PRs
CodebergFree, open source onlyNo paid plan; imports issues and PRs
SourceHutContributing only$4/mo; push the repo only

GiB = gibibyte, close to a GB. List prices before tax, subject to change. None of these forges converts your GitHub Actions workflows automatically.

Migration plan

Moving off GitHub in eight steps

The repo is the easy part. This plan walks you through what doesn't show up in git clone: CI, secrets, integrations and discoverability.

01

Inventory everything that lives on GitHub

First

For each repo, list open issues, open pull requests, every file in .github/workflows, Actions secrets and variables, webhooks, installed GitHub Apps, Pages sites, published packages, LFS objects and Sponsors.

Importers take the code and, at best, issues. Nobody moves the rest for you.

Time
about an hour per ten repos
Skip it and
a deploy quietly stops
02

Run a pilot on one repo

Week 1

Pick a representative repo with a real pipeline and a few issues, and move it alone. You'll see what the importer keeps, what it drops, and how long the workflow rewrite really takes.

Write down what the importer leaves behind. On GitLab, that's required status checks, outside collaborators and the org structure.

Time
one to two days
You get
a real estimate
03

Create the right access token

Import

For GitLab, create a classic personal access token with repo scope, and add read:org if the repos belong to an organization.

Revoke it the moment you're done. It can read every private repo you have.

GitLab scopes
repo, read:org
Afterwards
revoke the token
04

Check LFS and storage headroom

Import

If you use Git LFS, check space on the other side: 10 GiB total on GitLab Free, 1 GB of LFS on Bitbucket Free, and a request past 750 MiB on Codeberg. On GitHub, LFS data packs are $5 a month for 50 GB. Compare before you move.

GitLab Free
10 GiB
Bitbucket Free
1 GB LFS
05

Rewrite CI, one workflow at a time

The big one

No forge converts your workflows. On GitLab, each job becomes a stage in .gitlab-ci.yml. Azure Pipelines uses its own YAML. Gitea and Forgejo look familiar, but the base image differs (Debian on Forgejo) and some keys are ignored.

Tip: use the move to run CI on your own runners. On GitLab Self-Managed and Forgejo, they don't eat into a minute quota. On GitHub, the Free credit buys about 2,000 Linux 2-core minutes at $0.006 each. To size the job, time the rewrite on your pilot and multiply by your number of workflows.

Time
pilot time × workflow count
Watch for
missing marketplace actions
06

Recreate secrets properly

Security

Actions secrets don't come along with any import. Recreate them on the new forge; on GitLab, as masked and protected variables, so they stay out of job logs and only reach protected branches.

Rotate them while you're at it. Keys that sat in one place for years deserve new values.

On GitLab
masked + protected
Good habit
rotate keys
07

Replace Pages, Sponsors and integrations

What doesn't follow

Swap GitHub Pages for GitLab Pages, Codeberg Pages or a host like Netlify. Move donations to another platform. Reconnect webhooks and apps (Slack, deploy tools, code scanning) one by one.

Update the old repo's README with the new address, and the links in your published packages.

Pages
GitLab, Codeberg, Netlify
Don't forget
webhooks
08

Keep a GitHub mirror, then archive

Cutover

Plenty of projects keep a read-only mirror on GitHub: the new forge pushes every commit there, so the project stays visible and searchable.

Once the team has settled in, archive the GitHub repos instead of deleting them. Existing links keep working and the history stays readable. As long as GitHub stays the source and the new forge is a mirror, you can roll back without losing anything.

How
push mirror to GitHub
Avoid
deleting repos

Is your tool missing from this page? Email us: hello@hackceleration.com

Migration pitfalls

What makes a GitHub exit go wrong

Failed migrations almost never break on the code. They break on these six things.

Assuming CI comes along

Mistake number one. Your workflows are code written for GitHub, using its marketplace. Budget time to rewrite them, and run old and new pipelines side by side for a few days.

Missing the 5-user wall

GitLab Free, Bitbucket Free and Azure DevOps all stop at 5 users. A six-person team finds the paid plan when inviting the last colleague. Count every account, contractors included.

Comparing raw minutes

Bitbucket multiplies minutes by runner size. Azure DevOps limits you by parallel jobs. GitLab and GitHub count compute credit. Compare cost per real pipeline run, not the headline minute number.

Putting private code on Codeberg

Codeberg is for open source only, and the nonprofit won't take money for an exception. For private code, self-host Forgejo or Gitea, or use GitLab.

Underestimating lost reach

For a public project, stars, forks and discovery happen on GitHub. Leave without a mirror and you drop out of search. Zig also gave up a Sponsors channel worth more than $170,000 a year.

Mistaking a new tool for sovereignty

Azure DevOps belongs to Microsoft, just like GitHub. If the goal is keeping data in Europe, check the server region (Codeberg in Berlin, your own instance, a managed host's EU region), not just the brand.

  • Inventory of repos, issues, workflows, secrets, webhooks and Pages
  • Real headcount, contractors included
  • One pilot repo migrated with a green pipeline
  • Access token created with the right scopes, then revoked
  • Enough room for LFS objects
  • Secrets recreated as masked, protected variables
  • Pages, donations and integrations reconnected
  • GitHub mirror in place and README updated
  • GitHub account kept open, repos archived, while outside links still point there
FAQ · 8 questions

GitHub alternative FAQ

  • What is better than GitHub?

    Nothing is better across the board, but several forges win on one axis. GitLab beats it on all-in-one DevOps and self-hosting. Bitbucket is cheaper per seat for Jira teams. Gitea and Forgejo win on running your own forge with no CI minute caps. Pick the axis that made you search first.

  • Is GitLab better than GitHub?

    For an all-in-one platform you can host yourself, yes. For reach and community, no. Price often decides it: $4 per user on GitHub Team versus $29 on GitLab Premium. Baserow, which moved from GitLab to GitHub, says it misses GitLab's code review, merge when the pipeline passes, and branch-to-issue links.

  • Is there a free GitHub alternative?

    Yes. Self-hosted Gitea or Forgejo are free with no user or minute limits. GitLab Free covers 5 users and 400 CI minutes a month. Codeberg is free for open source projects. Tip: public groups on GitLab.com aren't held to the 5-user cap.

  • What is the best self-hosted GitHub alternative?

    Gitea or Forgejo for a small team: light, quick to set up, and they import issues and PRs straight from GitHub. GitLab Self-Managed if you need the full DevOps suite and have someone to run a heavier install. Managed GitLab hosts exist if you want GitLab without the ops work.

  • Can I migrate GitHub Actions?

    Not as-is. GitLab, Bitbucket and Azure DevOps use their own syntax, so you rewrite. Gitea and Forgejo read Actions-style YAML, but Forgejo itself warns it aims for familiarity, not compatibility. Expect to fix base images and ignored keys like permissions.

  • Is AWS CodeCommit still an option?

    Yes, again. AWS closed CodeCommit to new customers in 2024, then reopened it in 2025 across 29 regions, with LFS support announced for 2026. It's bare-bones compared to GitHub. It makes sense only if your team is all-in on AWS; migrate with git push --mirror. Google Cloud Source Repositories, on the other hand, stopped taking new customers in 2024.

  • Will GitHub charge for self-hosted runners?

    Not right now. A $0.002 per minute fee for private repos was announced in 2025 and then postponed after developer pushback. The official docs say self-hosted runners are free today. Postponed isn't cancelled, so keep a plan B if your bill depends on it.

  • Are there newer GitHub alternatives worth watching?

    Tangled, built on the AT Protocol, is an early-stage forge to keep an eye on, not one to bet a company on yet. If you want AI coding help without Copilot, our AI coding tools ranking compares the alternatives.

Hack'celeration Labs

Get the next migration guide in your inbox

One tool to leave, one destination, one migration plan. Nothing else.

No spam. Unsubscribe in one click.