Moving a git repository

后端 未结 5 1800
星月不相逢
星月不相逢 2020-12-24 11:28

This question may be dumb, but I\'ve been wondering it for a while. It\'s about git repositories, but I assume it\'s the same for local repositories for other DVCS\'.

<
相关标签:
5条回答
  • 2020-12-24 12:01

    You can move the git directory from one machine to another or say, you want to migrate your project folder.

    All the information about origin is stored in '.git' folder, which is created when you initialize a git repository under a directory on your system.

    Procedure

    1. : Move the project folder to other location.
    2. : If the project folder is being moved to a new machine, then create corresponding SSH key-pair.
    3. : Tell git who you are using: git config --global user.email "your_git_email_id@youremail"
    0 讨论(0)
  • 2020-12-24 12:02

    No, you wouldn't have to change anything else. That is

    • assuming no scripts set GIT_DIR, GIT_WORKTREE or GIT_INDEX directly (unlikely)
    • you have no external repositories pointing to this copy

      • if you do you'll have to repoint them by using

        git remote set-url [--push] origin user@yourhost:/home/user/newlocation/Project
        

    (origin should be the name of the remote; origin is the default name when cloning from a remote repo)

    0 讨论(0)
  • 2020-12-24 12:15

    Show current remote (this is optional step of course):

    $ git remote show origin
    * remote origin
    URL: git@oldserver:project.git
    Remote branch(es) merged with 'git pull' while on branch master
    master
    Tracked remote branches
    master
    

    What we need to do is to remove current origin and add the new one:

    $ git remote rm origin
    $ git remote add origin git@newserver:project.git
    $ git remote show origin
    * remote origin
    URL: git@newserver:project.git
    Remote branch(es) merged with 'git pull' while on branch master
    master
    error: refs/remotes/origin/HEAD points nowhere!
    New remote branches (next fetch will store in remotes/origin)
    master
    

    Don’t worry about the error shown by the last command. The first pull from the origin will fix it:

    $ git pull
    From git@newserver:project.git
    * [new branch]      master     -> origin/master
    Already up-to-date.
    $ git remote show origin
    * remote origin
    URL: git@newserver:project.git
    Remote branch(es) merged with 'git pull' while on branch master
    master
    Tracked remote branches
    master
    

    I’m still fresh with Git so maybe thre’s a better way to do it but this worked for me.

    0 讨论(0)
  • 2020-12-24 12:19

    Yes, everything in .git is relative. If you have added the repository as a named remote to another repository, you would have to change the remote URL in that other repository, though.

    0 讨论(0)
  • 2020-12-24 12:23

    I've found that submodules are not relative in git.

    So, if you want to move a project that contains submodules, you have to edit the .git file in the submodule, as well as the "worktree" attribute in the submodule config file, which is stored in the parent's .git/modules/MODULENAME/config file.

    0 讨论(0)
提交回复
热议问题