我在一个小的快速ssd上有我的源代码和.git文件夹,我想在我的第二个较大的较慢的硬盘上安装.git目录并将我的工作代码保存在我的快速小ssd上,是否可能?怎么样? 感谢。
我想我的本地工作副本.git目录会随着时间的推移而增长(使用新版本),因此在我更大的本地硬盘上使用它是有意义的。工作副本的增长速度并不快,因此它可以在ssd上发挥作用,因为它可以更快地编译。
另一个有趣的奖励是我将在2个差异驱动器上获得源代码(工作代码和.git repo),这对笔记本电脑来说更有保障....
我正在使用Windows
答案 0 :(得分:26)
您可以将.git
目录符号链接(或使用交接点)到其他位置:
$ cd my/project
$ mv .git /over/here/.git
ln -s /over/here/.git .
存储库可以正常工作。
或者你可以用一个文件替换.git
文件夹,该文件告诉git .git
文件夹的确实位置。这正是git子模块默认设置为in version 1.7.8 or later的方式。
重新配置现有结帐的步骤如下:
.git
gitdir: path/to/.git
core.worktree
定义为指向工作副本作为一个脚本:
$ cd my/project
$ mv .git /tmp/.git
$ echo "gitdir: /tmp/.git" > .git
$ git config core.worktree $PWD
使用Microsoft的junction.exe
在Windows上轻松创建联结。
> junction.exe c:\fast-ssd\proj\.git d:\slow-hdd\proj\.git
答案 1 :(得分:12)
可以将Git存储库目录放在与工作副本的根目录不同的位置,但我不确定它是否适用于驱动器。
您可以将repo目录设置为cloning with the --separate-git-dir
flag:
$ git clone --separate-git-dir=<path to directory for repo> \
<remote url> <path for working copy>
对于已经克隆的仓库,您可以使用--git-dir=<path>
and --work-tree=<path>
flags for git
为仓库和/或工作副本设置不同的路径。
您可能还想查看core.worktree
configuration。
答案 2 :(得分:3)
实际上,你可以运行
$ git init --separate-git-dir=[path to directory for .git data]
git init可以安全地在已经克隆的存储库中使用
在现有存储库中运行git init是安全的。它不会覆盖已存在的东西。重新运行git init的主要原因是选择新添加的模板(或者如果给出了--separate-git-dir,则将存储库移动到另一个地方)。
答案 3 :(得分:0)
--separate-git-dir
方法与gitdir
方法完全相同。
运行后
$ git init --separate-git-dir=[path to directory for .git data]
发生的情况是在本地目录中创建了一个.git
文件,其内容如下:
gitdir: [path to directory for .git data]