| Because of so many GitHub problems, I'm adding GitLab.com and Codeberg.org. Setup is simply 3 steps: 1. Sign up on each service, ideally with the same username. 2. For each repo you want to share, create the same repo name as a blank repo; do not automatically create a README. 3. Edit your local file .git/config to add push URLs, then push as usual. Example: [remote "origin"]
url = git@github.com:foo/bar.git
pushurl = git@codeberg.org:foo/bar.git
pushurl = git@github.com:foo/bar.git
pushurl = git@gitlab.com:foo/bar.git
fetch = +refs/heads/*:refs/remotes/origin/*
|
These days, the problem with cloud-hosted Git platforms is not where to push your code. Replicating repositories across multiple providers is relatively easy, and Git has always been good at that. The harder problem is that successful teams end up accumulating a lot more than source code around their repositories, and much of that information becomes just as important as the code itself.
Bug reports, feature requests, documentation, design discussions, code reviews, project planning, CI/CD configuration, and years of historical context all tend to live inside platforms such as GitHub. While the Git repository itself is portable, all of that surrounding data is often much harder to migrate cleanly, especially if a team has built workflows and integrations around a particular provider.
That, in my view, is one of the main reasons so many companies are heavily dependent on GitHub. Moving the code elsewhere is usually straightforward; moving the entire development process, with all of its history, metadata, and institutional knowledge, is not. When GitHub goes down, the question is often less about where you can push your next commit and more about how easily you can recreate the rest of the environment that your team relies on every day.