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\'.
<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
No, you wouldn't have to change anything else. That is
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)
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.
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.
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.