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.

  • How to commit a git repo into a git repo (not submodule)
  • How to handle a large git repository?
  • Default remote for git fetch
  • Git - best practices (in general, and from a perspective of former SVN user.)
  • prevent some commit/code to be merged into master
  • What's the best practice for handling system-specific information under version control?
  • 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!

  • How to delete Windows Azure Git repository?
  • git-upload-pack: command not found
  • git “loose object … is corrupt” - what data have I lost?
  • How does Mercurial stack up against GIT and SVN?
  • Forcing a merge after git fetch
  • Rename a merged commit without losing that commit's parents
  • 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:

    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.

    Git Baby is a git and github fan, let's start git clone.