Git - 将.git目录移动到另一个驱动器,将源代码保留在原来的位置

wil*_*ily 20 git

我在一个小的快速ssd上有我的源代码和.git文件夹,我想在我的第二个较大的较慢的硬盘上有.git目录,并将我的工作代码保存在我的快速小ssd上,是否可能?怎么样?谢谢.

我想我的本地工作副本.git目录会随着时间的推移而增长(使用新版本),因此在我更大的本地硬盘上使用它是有意义的.工作副本的增长速度并不快,因此它可以在ssd上发挥作用,因为它可以更快地编译.

另一个有趣的奖励是我将在2个差异驱动器上拥有源代码(工作代码和.git repo),这对笔记本电脑来说更具保护性....

我正在使用Windows

AD7*_*six 27

是的你可以

符号链接

您可以将.gitdir 符号链接(或使用交接点)到不同的位置:

$ cd my/project
$ mv .git /over/here/.git
ln -s /over/here/.git .
Run Code Online (Sandbox Code Playgroud)

存储库将正常工作.

gitdir:

或者你可以.git用一个文件替换文件夹,该文件告诉git .git文件夹的确实位置.这正是版本1.7.8或更高版本中默认设置git子模块的方式.

重新配置现有结帐的步骤如下:

  1. 将.git目录移动到需要的位置
  2. .git包含以下内容的文件替换它:gitdir: path/to/.git
  3. define core.worktree指向工作副本

作为一个脚本:

$ cd my/project
$ mv .git /tmp/.git
$ echo "gitdir: /tmp/.git" > .git
$ git config core.worktree $PWD
Run Code Online (Sandbox Code Playgroud)

Windows上的连接点

使用junction.exeMicrosoft 在Windows上轻松创建联结.

> junction.exe c:\fast-ssd\proj\.git d:\slow-hdd\proj\.git
Run Code Online (Sandbox Code Playgroud)

  • 感谢AD7Six和Cupcake,我最终尝试了Junction和.git文件,两者都有效.我努力使用Junction作为"git clone"之后的工作副本(或移动的.git)工作正常,而它与.git文件不兼容. (2认同)

小智 12

可以将Git存储库目录放在与工作副本的根目录不同的位置,但我不确定它是否适用于驱动器.

使用--separate-git-dir标志进行克隆时,可以将repo目录设置为放在不同的目录中:

$ git clone --separate-git-dir=<path to directory for repo> \
<remote url> <path for working copy>
Run Code Online (Sandbox Code Playgroud)

对于已经克隆的repo,您​​可以使用--git-dir=<path>--work-tree=<path>标志为git repo和/或工作副本设置不同的路径.

您可能还想查看core.worktree配置.