在远程服务器上用git
工作时,因其存放版本管理的全部重要信息,有时不希望.git
目录出现在工作区里。如果能把.git
目录放在自定义位置则在备份、传输工作目录方面都有方便,甚至误删了工作目录也能找回来。
方法
在已经初始化好的工作目录下,使用git init
命令。
git init --separate-git-dir=.git文件路径 .
此时.git
目录改为自定义文件路径,原.git
目录变为一个存有新目录链接的同名文件。
安全性
根据文档,重新运行git init
命令不会影响已有的版本记录。
Running
git init
in an existing repository is safe. It will not overwrite things that are already there. The primary reason for rerunning git init is to pick up newly added templates (or to move the repository to another place if--separate-git-dir
is given).
如果需要将.git
目录移动回工作目录,只要将此时的.git
文件删除,将自定义的.git
目录复制回来即可。
其他方法比较
另有两种方法可以达到类似效果但都非常麻烦。
- 在所有
git
语句中都加入--git-dir=/path/to/dot-git-directory
参数。
- 此方法过分繁琐。同时让命令难读。
- 将环境变量加入
GIT_DIR=/path/to/dot-git-directory
。
- 每次初始化了新的
git
工作目录,需要记得将这里的自定义路径改一下。容易忘。同时在不同项目切换容易造成混乱。