Your Code. Your Rules.

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).


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.


Next Steps