Migrating a Repository to git.eu
This guide moves one repository by hand, from GitHub, GitLab, or any Git host to
git.eu, with git only - all branches, tags, and history arrive intact.
Moving many repositories? The giteu-migrate start command asks what it needs, then creates
and pushes each one for you - see Migrate to git.eu.
Prerequisites
- Git installed locally (2.30+ recommended for full mirror support)
1. Configure Your Access
Before you can push, authenticate the git command-line client for your instance. The
quick start guide sets up your credentials in a couple of minutes - install a
small helper once, sign in through your browser, and tokens refresh automatically after that.
2. Mirror an Existing Repository
Create the empty repository on your instance first (web UI: New repository). Then, in your
existing local clone, point origin at git.eu and push everything in one operation:
git remote remove origin
git remote add origin https://<INSTANCE>.git.eu/<USERNAME>/REPO_NAME.git
git push --mirror origin
push --mirror pushes every branch, tag, and ref in one operation - all history arrives intact.
REPO_NAME is the name you gave the new empty repository; <INSTANCE> and <USERNAME> resolve
automatically when you are signed in on this site (swap them by hand otherwise).
refs/remotes/ not being deleted. This is
harmless - the mirror is complete.
Git LFS
A repository that uses Git LFS needs its LFS objects pushed too. Install git-lfs on the machine that pushes:
Git finds the git-lfs executable on your PATH and runs it as git lfs.
Windows
Git for Windows
Git LFS is bundled with Git for Windows. Keep the "Git LFS" option checked in the installer - it is checked by default.
Download the installer
Download the Windows installer from the git-lfs releases page.
macOS
Homebrew
brew install git-lfs
Linux
Debian / Ubuntu
sudo apt install git-lfs
Other distributions
Install the git-lfs package from your distribution, or download a prebuilt binary for your OS/arch from the git-lfs releases page and place it on your PATH.
Verify with git lfs version - it should print a version string.
Before step 2, while origin is still the old host, fetch every LFS object:
git lfs fetch --all
In step 2, after git remote add, upload the LFS objects before the mirror push:
git lfs push --all origin
git push --mirror origin
The giteu-migrate tool does the same: LFS objects migrate with the
repository, and git-lfs must be installed on the machine that runs it. Each LFS object has a
size ceiling, set by each instance.
Tools
To migrate many repositories at once - a GitHub organization, a GitLab group, another git.eu
instance or a list of URLs - use the giteu-migrate command-line tool:
giteu-migrate start walks you through it.
Verify the Migration
After pushing, confirm all branches and tags arrived:
# List remote branches
git ls-remote --heads origin
# List remote tags
git ls-remote --tags origin
Or browse the repository on your instance to confirm the branch list and commit history.
Troubleshooting
HTTP 413 - Request Entity Too Large
The server rejected the push because the repository exceeds the size limit (2 GB). Contact the server administrator.
RPC failure / curl 65 - Connection reset
error: RPC failed; curl 65 Recv failure: Connection reset by peer
The push likely succeeded - Git lost the response but the data landed. Run git push again;
if it prints Everything up-to-date, the migration is complete.
If it fails repeatedly, increase the client buffer:
git config --global http.postBuffer 524288000
Then retry.