Skip to content

Instantly share code, notes, and snippets.

@niksumeiko
Last active July 1, 2025 18:41
Show Gist options
  • Save niksumeiko/8972566 to your computer and use it in GitHub Desktop.
Save niksumeiko/8972566 to your computer and use it in GitHub Desktop.

Revisions

  1. Nik Schumacher revised this gist Feb 13, 2014. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions git.migrate
    Original file line number Diff line number Diff line change
    @@ -6,12 +6,12 @@
    # Let's assume we call "old repo" the repository you wish
    # to move, and "new repo" the one you wish to move to.
    #
    ### Step 1. Make sure you have a local copy of all 'old repo'
    ### Step 1. Make sure you have a local copy of all "old repo"
    ### branches and tags.
    # Fetch all of the remote branches:
    # Fetch all of the remote branches and tags:
    git fetch origin

    # View all 'old repo' local and remote branches:
    # View all "old repo" local and remote branches:
    git branch -a

    # If some of the remotes/ branches doesn't have a local copy,
  2. Nik Schumacher created this gist Feb 13, 2014.
    48 changes: 48 additions & 0 deletions git.migrate
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    #!/bin/bash
    # Sometimes you need to move your existing git repository
    # to a new remote repository (/new remote origin).
    # Here are a simple and quick steps that does exactly this.
    #
    # Let's assume we call "old repo" the repository you wish
    # to move, and "new repo" the one you wish to move to.
    #
    ### Step 1. Make sure you have a local copy of all 'old repo'
    ### branches and tags.
    # Fetch all of the remote branches:
    git fetch origin

    # View all 'old repo' local and remote branches:
    git branch -a

    # If some of the remotes/ branches doesn't have a local copy,
    # checkout to create a local copy of the missing ones:
    git checkout -b <branch> origin/<branch>

    # Now we have to have all remote branches locally.


    ### Step 2. Add a "new repo" as a new remote origin:
    git remote add new-origin [email protected]:user/repo.git


    ### Step 3. Push all local branches and tags to a "new repo".
    # Push all local branches (note we're pushing to new-origin):
    git push --all new-origin

    # Push all tags:
    git push --tags new-origin


    ### Step 4. Remove "old repo" origin and its dependencies.
    # View existing remotes (you'll see 2 remotes for both fetch and push)
    git remote -v

    # Remove "old repo" remote:
    git remote rm origin

    # Rename "new repo" remote into just 'origin':
    git remote rename new-origin origin


    ### Done! Now your local git repo is connected to "new repo" remote
    ### which has all the branches, tags and commits history.