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!
You can set the GIT_DIR
environment variable:
If the
$GIT_DIR
environment 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:
--git-dir=<path>
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.
精彩评论