Git-将.Git目录移动到另一个驱动器,将源代码保留在原处
我有我的源代码和.git文件夹在一个小的快速ssd上,我想把.git目录放在我的第二个大的慢的硬盘上,并把我的工作代码放在我的快速小的ssd上,可以吗?怎样? 谢谢 我想我的本地工作副本.git目录会随着时间的推移而增长(有了新版本),所以把它放在更大的本地硬盘上是明智的。工作拷贝的增长速度不快,因此它在ssd上运行sens,因为它可以更快地编译 另一个有趣的好处是,我将在2个diff驱动器上提供源代码(工作代码和.git repo),这对笔记本电脑来说是一个更好的保护Git-将.Git目录移动到另一个驱动器,将源代码保留在原处,git,Git,我有我的源代码和.git文件夹在一个小的快速ssd上,我想把.git目录放在我的第二个大的慢的硬盘上,并把我的工作代码放在我的快速小的ssd上,可以吗?怎样? 谢谢 我想我的本地工作副本.git目录会随着时间的推移而增长(有了新版本),所以把它放在更大的本地硬盘上是明智的。工作拷贝的增长速度不快,因此它在ssd上运行sens,因为它可以更快地编译 另一个有趣的好处是,我将在2个diff驱动器上提供源代码(工作代码和.git repo),这对笔记本电脑来说是一个更好的保护 我使用的是windows
我使用的是windows,Git repository目录可能位于与工作副本根目录不同的位置,但我不确定它是否可以跨驱动器工作 您可以将回购目录设置为放置在不同的目录中,同时:
$git clone--单独的git目录=\
对于已克隆的回购,您可以使用为回购和/或工作副本设置不同的路径
您可能还想查看。可以
符号链接
您可以将.git
目录符号链接(或使用连接点)到其他位置:
$ cd my/project
$ mv .git /over/here/.git
ln -s /over/here/.git .
而且存储库也可以正常工作
gitdir:
或者您可以用一个文件替换.git
文件夹,该文件告诉git.git
文件夹的实际位置。这正是默认情况下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提供的工具在Windows上轻松创建连接
> junction.exe c:\fast-ssd\proj\.git d:\slow-hdd\proj\.git
实际上,你可以直接跑
$ git init --separate-git-dir=[path to directory for .git data]
git init可以安全地在已克隆的存储库中使用
在现有存储库中运行git init是安全的。它不会覆盖已经存在的内容。重新运行git init的主要原因是为了获取新添加的模板(或者如果给出了--separate git dir,则将存储库移动到另一个地方)
对的引用--separate git dir方法与gitdir
方法完全相同
跑步后
$ git init --separate-git-dir=[path to directory for .git data]
发生的情况是,在本地目录中创建了一个.git
文件,其中包含以下内容:
gitdir: [path to directory for .git data]
当你说你的“源代码”时,你实际上是指你的工作副本吗?因为从技术上讲,
.git
目录/repo也包含您的源代码。还有,你为什么要这么做?可以在.git
repo目录的单独目录中拥有一个工作副本,但我不确定它是否可以跨驱动器工作。您是否试图在SSD上节省空间?.git
repo实际上是压缩的,并且比您的工作副本小。如果repo在硬盘上是独立的,您也可能会降低性能。是的,基本上我希望将我的工作副本放在快速小型ssd上,将.git目录/repo放在更大(但速度较慢)的hddIf上。如果有人想尝试创建使用Windows连接点的解决方案,请参阅。另请参见。出于好奇,是否可以在工作副本中设置指向.git
repo的符号链接(*nix systems)或连接点(Windows)?这需要最少的配置/步骤吗?符号链接可以工作,但不确定连接点。因为问题是关于windows的,我不确定这对OP是否有用-仍然需要将核心.worktree
设置为任何一种方式。感谢AD7Six和Cupcake,我最终尝试了Junction和.git文件,这两种文件都可以工作。在“git克隆”之后,我使用Junction结束。工作副本(或moved.git)工作正常,但它与.git文件不兼容。您使用的是git版本<1.7.8吗?git是如何存储子模块的(这与这个答案相关,因为它很简单)-很高兴知道一个连接为您工作-我将更新答案。我想大多数有这个问题的人在看到init
时都会跳过这个评论,尽管它确实满足了我们的需要!谢谢你的提示。它不能跨驱动器工作,但在Linux上你可以使用符号链接