|# source: http://st-on-it.blogspot.com/2010/01/how-to-move-folders-between-git.html|
|# First of all you need to have a clean clone of the source repository so we didn't screw the things up.|
|git clone git://server.com/my-repo1.git|
|# After that you need to do some preparations on the source repository, nuking all the entries except the folder you need to move. Use the following command|
|git filter-branch --subdirectory-filter your_dir -- -- all|
|# This will nuke all the other entries and their history, creating a clean git repository that contains only data and history from the directory you need. If you need to move several folders, you have to collect them in a single directory using the git mv command.|
|# You also might need to move all your content into some directory so it didn't conflict with the new repository when you merge it. Use commands like that|
|git mv my_stuff new_directory/|
|# Once you've done commit your changes, but don't push!|
|git commit -m "Collected the data I need to move"|
|# This is all about the source repository preparations.|
|# Now go to your destination repository|
|# And here is the trick. You need to connect your source repository as a remote using a local reference.|
|git remote add repo1 ../my-repo1/|
|# After that simply fetch the remote source, create a branch and merge it with the destination repository in usual way|
|git fetch repo1|
|git branch repo1 remotes/repo1/master|
|git merge repo1 --allow-unrelated-histories|
|# This is pretty much it, all your code and history were moved from one repository to another. All you need is to clean up a bit and push the changes to the server|
|git remote rm repo1|
|git branch -d repo1|
|git push origin master|
|# That's all. After that you can nuke the temporary source repository.|
@sudhirshahu51 your first command failed as by the "usage" error git displays. you called "git remote add" with three arguments (repo, ../Python-programming-Udacity and /) but you can only supply 2 (, ) as by the git command stated. So for sure, the next command (git fetch repo1) also fails.
For help I suggest to provide more context, what you did and what you have. And during the session of what you did, have a eye to errors or message you get from git that shows any error. This helps to find which commands you issued failed and why.
I would add a little clarification:
I also wanted to keep multiple folders and files, so I used this command instead of
git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- dir1 dir2' --prune-empty -- --all
via Stack Overflow
As an workaround:
@itsmeabhijeet you can skip
@MaikoKingma : Thanks for the response.
when i try at repo2 ( cd repo2), all the files are fetched under repo2. Also when i move inside repo2/test/ , i get git errors.
Could you please help or provide full commands. My requirements is kind of similar like your earlier post. Thanks in Advance
Thanks, worked like a charm.
Can I keep using this procedure continuously? I mean, can I still develop in
Except that this essentially cuts off the history for the items you want to keep!
For example repeat your steps but changing the following based on the branch;