There are several ways to mirror a repository both on GitLab and GitHub.
Repository Mirroring 🔗︎
The free GitLab plan allows you to pull from a remote repository.
You could use a GitHub repository as the main repo, and the GitLab repo as the mirror.
In theory, you can also push from GitLab to GitHub. But I couldn't get it working on GitLab's free plan.
Remote Repositories and Overloading 🔗︎
The alternative is to “overload” your remote repository address. This method works well for personal projects:
git remote set-url ––add origin https://github.com/user/repo.git
You don’t see this trick everyday, but in git the relationship between a remote name and remote URL is not necessarily one-to-one! Git will quite happily map a remote name to multiple repository URL’s.
Use Conditional Includes 🔗︎
If you want to use either GitLab or GitHub, or if you want to use separate git identities, you can use conditional includes.
Git will automatically apply the correct configuration (email, user, etc.) depending on the directory you set up.