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.

  • manage multiple github repos from the same system and different user names
  • Unity Git - Ignore Library
  • git - remote add origin vs remote set-url origin
  • Remove refs/original/heads/master from git repo after filter-branch --tree-filter?
  • Sequentialization and parallelization of builds in Phabricator
  • Version control: from zip to git
  • 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 can I remove an applied git patch?
  • Installation of python libraries on OS X
  • Can't remove from git nonexistent file
  • Why should I commit and not push in Git?
  • merge git projects without common commit
  • setup.py that pulls in non-Python github repos and puts them in the correct directory?
  • 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.