Moving all Contents of a Git Repository into another as a Sub-Directory

This post teaches you how to move the entire contents of a git repository into another as a sub-directory, and maintain the git history of both.

Here’s my scenario — I have two git repositories — CameraSpike and Spikes. I want to move CameraSpike into Spikes as a sub-directory, and preserve the commit history. Here’s the script I ended up writing for it. It has references and copy pastes from various channels on the internet, and some of my own work. It’s hacky, but works. For now, I ignore all merge conflicts by using the files from the destination. In my case, the file concerned was .gitignore.

The Script -

cd $1
mkdir .$1
git mv * .$1
git mv .$1 $1
git add .
git commit -a -m “Preparing $1 for move”
cd ../$2
git remote add temp ../$1
git fetch temp
git merge temp/master
git checkout -ours .
git add .
git commit
git remote rm temp

Directions -

Copy the contents of the script into move_repo.sh.

Place this file one level above CameraSpike and Spikes.

Then run sh ./move_repo.sh CameraSpike Spikes

Reference http://www.nomachetejuggling.com/2011/09/12/moving-one-git-repo-into-another-as-subdirectory/ http://superuser.com/a/165534/127944 http://stackoverflow.com/questions/18667308/git-move-file-and-directory-into-a-sub-directory-along-with-commit-history

We make tech easy to learn with our interactive online courses at https://interleap.co .

Originally published at http://aspoonfulofgyan.wordpress.com on October 18, 2015.

Educator, Founder @ Interleap

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store