How to detach the local git repository from its working directory?
Is this feasible?
I would like to have the
.git directory on another drive than the checkout directory.
I could not find a way to detach both.
The reason is: there is an exchange area on a very slow network drive and limited space and this is a real nightmare with timeouts. At least the repository operations (synchronization with a svn repository) could then be done fast enough to avoid the timeouts and file copy can be done afterwards on checkout with the poor performance. I could not find any way to cope with this situation (which is out of my control)
I would not like to but if there is no better suggestion I would replace it by a local git repository and rsync’ing the checkout dir in both directions to and from the slow drive.
I bet you have a better idea!
2 Solutions collect form web for “How to detach the local git repository from its working directory?”
You can set the
GIT_DIR environment variable:
$GIT_DIRenvironment variable is set then it specifies a path to use instead of ./.git for the base of the repository.
If setting an environment variable is infeasible for any reason, you can use the
--git-dir option with any git command:
Set the path to the repository. This can also be controlled by setting the GIT_DIR environment variable. It can be an absolute path or relative path to current working directory.
I’d really suggest keeping your entire repo on your preferred drive. You can then put a bare repo on the beyond-your-control drive, and push to it. This is the best way to minimize your interactions with the bad storage.
If for some reason you must split a repo across drives, why not just create the repo on one drive, move the .git directory to the other drive, then symlink .git in your repo to the relocated .git directory.