2010-08-16 91 views
1

这可行吗?如何将本地git存储库从其工作目录中分离出来?

我想要在另一个驱动器上的.git目录比结帐目录。 我找不到两种方法分开。

原因是:在网络驱动器非常慢和空间有限的交换区域,这是一个真正的超时噩梦。至少,存储库操作(与svn存储库同步)可以做得足够快,以避免超时和文件复制可以在结帐后与性能差。我找不到任何办法来应付这种情况(这是我无法控制的)

我不喜欢,但如果没有更好的建议,我会将其替换为本地git存储库并rsync检出在慢速驱动器的两个方向都是dir。

我敢打赌,你有个更好的主意!

回答

4

您可以set the GIT_DIR environment variable

如果设置了$GIT_DIR环境变量则指定要使用的,而不是./.git存储库的基本路径。

如果设置环境变量是不可行的任何理由,你可以用任何的Git命令使用--git-diroption

--git-dir=<path> 

设置仓库路径。这也可以通过设置GIT_DIR环境变量来控制。它可以是当前工作目录的绝对路径或相对路径。

+0

如果你真的需要这样做,命令行选项将成为一种方式,除非你只有一个回购,这是一个坏计划! – Cascabel 2010-08-16 18:14:48

+0

感谢您的提示。我完全忽略了/误解了这个选项的好处。我知道我的用例很奇怪。但即使有这种怪异的情况,git也可以应付! :-) – jdehaan 2010-08-17 08:28:01

2

我真的建议您在首选驱动器上保留您的整个回购。然后,您可以在超出您的控制范围的驱动器上放置一个裸回购,并推送给它。这是最大限度地减少与不良存储交互的最佳方式。

如果由于某种原因,你必须分裂在驱动器回购,为什么不只是一个驱动器上创建的回购,将.git目录到其他驱动器,然后git的符号链接在你的回购的git的搬迁目录。

+0

不幸的是符号链接是不可能的(webdav),我也必须拉/合并更改...但是好的提示为其他+1。 – jdehaan 2010-08-16 20:35:39

+0

@jdehaan:我不明白这是如何阻止你使用裸回购 - 你做了你所有的工作(提交,合并/拉取,重新绑定等等),并在事情最终完成时推动。你只是不想要额外的步骤?就其他人而言,生活在网络驱动器上的.git目录与在此生存的裸露回购站几乎完全相同。 – Cascabel 2010-08-16 21:37:44

+0

有些人不得不将数据放在磁盘上,出于政治原因,不得/不能访问git仓库。 – jdehaan 2010-08-17 06:30:36

相关问题