How to migrate GitLab to GitHub without losing merge request history

You can migrate GitLab to GitHub with merge request history only partly: commits, branches and tags move with Git, while review threads, approvals and pipeline logs depend on your migration tool and often need a separate archive. Take a full backup of the old instance before decommissioning it.

Can you move GitLab to GitHub and keep merge request history?

Partly, and the gap depends on the route you pick. Git history, branches and tags move cleanly because they are plain Git. Merge request discussion, approvals, issue links and pipeline results live in GitLab's database and API, not in the repository, so they move only if your migration tool maps them, and often not completely. Treat the old instance as an archive to preserve before you decommission it.

For a fractional CTO, that last step is the one that gets skipped. The cutover date is on the project plan; "what do we keep from the old server?" is easy to leave off.

What moves easily and what tends to get lost

Check your chosen tool's current documentation for exact coverage. The pattern below is a planning aid, not a vendor guarantee.

ItemUsually travels with a cloneNeeds a migration toolOften at risk
Commits, branches, tagsYesNoLow
Merge request title and descriptionNoYesMedium
Review comments and threadsNoYes, if supportedHigh
Approvals and approver identityNoDepends on the toolHigh
Issues and labelsNoYesMedium
CI pipeline logs and artifactsNoNoHigh: often expire
Wiki pages and snippetsWiki is a separate repositorySometimesMedium
User mappingNoNeeds a mapping fileMedium: unmapped authors become placeholders

Pipeline logs deserve special attention. Instances can be set to expire artifacts on a schedule, so by migration day the older runs may already be gone.

How to run the migration in seven steps

  1. Inventory the instance. List groups, projects, active versus dormant repositories, and the approximate count of merge requests per project. Interview the person who set up the instance about integrations and runners.
  2. Decide the fidelity target. For each project, choose: code only, code plus open merge requests, or full history of merge requests and issues.
  3. Freeze retention. Pause any cleanup job that deletes old pipelines, artifacts or stale branches until the archive is taken.
  4. Pilot one project. Migrate a mid-sized repository with a messy merge request history, then compare counts of merge requests, comments and issues on both sides.
  5. Build the user map. Match GitLab usernames to GitHub accounts using work email addresses, and list the departed staff who will not have accounts.
  6. Migrate in waves. Move low-risk projects first, keep the source read-only after each wave, and record cutover dates.
  7. Archive the source. Take a full backup of the old instance, including its database export, and store it where an authorized administrator can retrieve it. Only then retire the server.

Common mistakes

Most failures here are planning gaps rather than tool faults, and each one is cheap to prevent when it is caught early.

MistakeWhy it hurtsFix
Migrating code only and deleting the serverReview reasoning and decision trail disappearKeep a complete backup before decommissioning
Skipping the user mapComments are attributed to placeholdersBuild the map in step 5 and test it on the pilot
Letting artifact retention run during the projectOld CI results expire silentlyPause cleanup jobs in step 3
Assuming counts matchSilent partial importsCompare merge request and comment counts per project
Moving secrets inside historyOld keys stay readable in the new homeRotate credentials, scan history before import

Why the old merge request history is worth keeping

This section matters only after the migration itself is safe. Do not let a licensing idea slow the cutover.

Engineering teams rarely notice how much judgment is in review threads. A merge request shows a proposed change, the objections raised, the revisions that answered them, who approved and whether the pipeline passed. That sequence of request, review and outcome is the kind of record AI developers want when they train and evaluate coding and review agents, because it shows how real engineers decide.

That makes the archive a possible licensing input for the client, in addition to a compliance and audit asset. It does not make every codebase a candidate. The company must own the code and the discussion, third-party and open-source material must be handled correctly, and any customer-confidential content has to be dealt with under rules agreed before work begins. Nothing is binding until the company agrees price and terms and signs.

Illustrative: a mid-sized engineering team

Illustrative scenario, fully fictional: a 120-person logistics software company has run a self-hosted GitLab for nine years. A fractional CTO plans a move to GitHub. In the inventory step she notices that three older products have no active development but thousands of closed merge requests. She keeps those as read-only backups and tells the CEO the archive may be worth a licensing conversation. The migration itself goes ahead exactly as planned.

What this means for a fractional CTO who refers clients

You are already in the room when systems are inventoried, which is the right time to raise it. Use this screen:

  • The company has 50+ full-time employees at peak (contractors excluded).
  • The instance holds several years of merge requests, issues and review threads.
  • Other engineering and operations systems also hold history; the Jira Service Management brief and the Zoho CRM brief show how neighbouring systems add context.
  • The company owns the code and can retrieve exports.
  • An owner, CEO or CFO would consider an exclusive license for an agreed term.

For change history in business systems, the question on Salesforce field history retention shows a similar retention pattern, and the data inventory builder lists systems without describing any record. Read referral opportunities for fractional CTOs for the full role playbook.

You make the introduction only. You never export, upload or describe confidential repositories, and the who qualifies page sets the baseline.

How partner rewards work

Partners earn 25% of the eligible platform fees SourceX actually collects from the referred company's licensing deals, capped at $100,000 cumulative per referred company. The reward becomes payable only after the buyer pays and SourceX receives its fee; a lead, meeting or signed agreement alone does not trigger payment, and no reward is guaranteed. It is a share of SourceX's fee and is never deducted from what the company receives. If you advise the client under a contract that limits referral income, check it first.

Next step

Add one line to your migration plan: "preserve a full archive before decommission". Then register as a partner if a client fits, or point the CEO to sourcex.si/apply.

  1. Step 1Share your linkSend your personal link to a company you know.
  2. Step 2Company appliesThe company applies itself at /apply.
  3. Step 3Buyer selects and paysThe buyer selects and pays for the data and SourceX receives its fee.
  4. Step 4You get your rewardYour share of SourceX fees becomes payable.

Common questions

Does a GitHub import bring over GitLab review comments?

It depends on the tool and its current coverage, so verify with your own pilot rather than assuming. Commits, branches and tags move reliably because they are Git data. Review threads, approvals and linked issues are the usual gaps, which is why comparing counts after a pilot project is the safest check.

Should I keep the GitLab server after migration?

Keep at least a complete backup, including the database export, until the business confirms it no longer needs the review trail. Some teams keep the instance read-only for a defined period. The backup protects audit needs and keeps open a future option to license the engineering archive.

What happens to CI pipeline logs during a move?

They usually do not migrate, and instances can expire artifacts on a schedule. Pause cleanup jobs before you start, then decide which projects need logs preserved. Where logs are not kept, note the gap in the archive documentation so nobody assumes it exists.

Can a company license its merge request history?

Potentially, if it owns the code and discussion and has the rights to license them. Third-party code, open-source material and customer-confidential content must be handled under rules agreed with the company. SourceX reviews rights, and nothing is binding until the company signs.

Is a fractional CTO allowed to refer clients and earn a reward?

Program-wise, anyone can join. Whether you may accept a referral reward depends on your client contract and any rules that apply to you, so read them first and disclose where required. The reward is paid only after the buyer pays and SourceX receives its fee.

Free resources

By SourceX Partnerships Team · Published 2026-10-09 · Updated 2026-10-09

Know a US company with valuable proprietary data?

Become a referral partner from anywhere we support, get your link and introduce an owner or authorized decision-maker.

Refer a company →

I own a business

Explore licensing your company's data to AI developers worldwide. Start a short assessment; no uploads needed.

Start an assessment