Quantcast
Channel: How to move some files from one git repo to another (not a clone), preserving history - Stack Overflow
Viewing all articles
Browse latest Browse all 17

How to move some files from one git repo to another (not a clone), preserving history

$
0
0

Our Git repositories started out as parts of a single monster SVN repository where the individual projects each had their own tree like so:

project1/branches        /tags        /trunkproject2/branches        /tags        /trunk

Obviously, it was pretty easy to move files from one to another with svn mv. But in Git, each project is in its own repository, and today I was asked to move a subdirectory from project2 to project1. I did something like this:

$ git clone project2 $ cd project2$ git filter-branch --subdirectory-filter deeply/buried/java/source/directory/A -- --all$ git remote rm origin  # so I don't accidentally overwrite the repo ;-)$ mkdir -p deeply/buried/different/java/source/directory/B$ for f in *.java; do >  git mv $f deeply/buried/different/java/source/directory/B>  done$ git commit -m "moved files to new subdirectory"$ cd ..$$ git clone project1$ cd project1$ git remote add p2 ../project2$ git fetch p2$ git branch p2 remotes/p2/master$ git merge p2 # --allow-unrelated-histories for git 2.9+$ git remote rm p2$ git push

But that seems pretty convoluted. Is there a better way to do this sort of thing in general? Or have I adopted the right approach?

Note that this involves merging the history into an existing repository, rather than simply creating a new standalone repository from part of another one (as in an earlier question).


Viewing all articles
Browse latest Browse all 17

Latest Images

Trending Articles





Latest Images