Skip to content

Instantly share code, notes, and snippets.

@jketcham
Forked from trongthanh/gist:2779392
Created November 18, 2020 22:42
Show Gist options
  • Save jketcham/c62a1f460c33c8da2d34499dd3536a6c to your computer and use it in GitHub Desktop.
Save jketcham/c62a1f460c33c8da2d34499dd3536a6c to your computer and use it in GitHub Desktop.

Revisions

  1. @trongthanh trongthanh revised this gist Jun 12, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.sh
    Original file line number Diff line number Diff line change
    @@ -32,7 +32,7 @@ git remote add repo1 ../my-repo1/
    git fetch repo1
    git branch repo1 remotes/repo1/master

    git merge repo1
    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

  2. @trongthanh trongthanh revised this gist Jun 12, 2019. No changes.
  3. @trongthanh trongthanh created this gist May 24, 2012.
    44 changes: 44 additions & 0 deletions gistfile1.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    # 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

    mkdir new_directory/
    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

    cd ../my-repo2/

    # 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

    # 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.