Moving a Git directory on a separate repo with the history

During your life as a busy developer, you might reach a point were your Git repo is huge and part of it would make sense to move it into a separate repository. It happened to us today in PPH, when we decided to move all our puppet modulesĀ out of our old configuration repository.

To start with, I cloned the existing repository into a separate folder so that I could mess with it as I liked (line 1) then I removed the origin to avoid accidental commit/push (line 3) and stripped out everything except the content of the directory I wanted to move in the separate repository using git-filter-branch (line 4)

git clone repoONE
cd repoONE
git remote rm origin
git filter-branch --subdirectory-filter exampleDir -- --all

At that point, the root folder of repoONE contained only the files of the exampleDir folder while the rest was wiped away. The next step was to create a new repository, add the repoONE as remote (line 4) and pull from it (line 5) then remove the remote repoONE (line 6).

mkdir repoTWO
cd repoTWO
git init
git remote add repoONE repoONEdirecotry
git pull repoONE master
git remote rm repoONE

RepoTWO, at that point, contained all the files I wanted along with the history.

Job Done!

Tags > , ,

No Comment

Post A Comment