# How to Split a Git Mono-Repository While Preserving File History

DevFeed: [How to Split a Git Mono-Repository While Preserving File History](<https://devfeed.tech/articles/how-to-split-git-repository-27726.md>)

Original publisher: [Read original article](<https://gagor.pro/2025/09/how-to-split-git-repository/>)

Author: Tom

Published: 2025-09-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Tomasz Gągor](<https://devfeed.tech/sources/tomasz-gagor.md>)

Topics: [Git](<https://devfeed.tech/topics/git.md>), [repo](<https://devfeed.tech/topics/repo.md>), [Script](<https://devfeed.tech/topics/script.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [automation](<https://devfeed.tech/tags/automation.md>), [bash](<https://devfeed.tech/tags/bash.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [devops](<https://devfeed.tech/tags/devops.md>), [git](<https://devfeed.tech/tags/git.md>), [git-filter-repo](<https://devfeed.tech/tags/git-filter-repo.md>), [history](<https://devfeed.tech/tags/history.md>), [history-preservation](<https://devfeed.tech/tags/history-preservation.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mono-repo](<https://devfeed.tech/tags/mono-repo.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [repository](<https://devfeed.tech/tags/repository.md>), [repository-split](<https://devfeed.tech/tags/repository-split.md>), [run](<https://devfeed.tech/tags/run.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [verify](<https://devfeed.tech/tags/verify.md>), [version-control](<https://devfeed.tech/tags/version-control.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

## AI overview

A tutorial for splitting a large Git mono-repository into smaller repositories while preserving the history of selected files. It covers cloning the repository, disconnecting the old remote, filtering history, cleaning up unreferenced data, configuring a new origin, and pushing and verifying the result.

## Source excerpt

This guide explains how to split a mono-repo into smaller repositories, keeping the git history for selected files.