2009-08-16 89 views
6

这个问题出于好奇而不是任何实际的问题,但我可以有效地让我的$ GIT_DIR成为git://example.com/repo.git/?所以没有.git文件夹 - 每一次提交等都会经历网络开销。git没有.git文件夹 - 一个远程git-dir

编辑: 一个潜在用途的情况下可能是试图做一个简单的“出口”像SVN,但事实证明,问题的答案here

+0

你的问题措辞可怕,语法是我可能知道答案,但不能解决问题。 – 2009-08-16 10:03:44

+0

我其实同意。我现在重新写了它,希望更好:) – 2009-08-18 06:52:59

回答

3

$GIT_DIRintroduced in May 2005,是:

  • 同时指定SHA1_FILE_DIRECTORY(是GIT_OBJECT_DIRECTORY,即 “$GIT_DIR/objects ”)
  • GIT_INDEX_FILE(“ $GIT_DIR/index”)

当未定义GIT_DIR时,它默认为“.git”。

它意味着当前工作目录的绝对路径或相对路径,而不是http或git绝对路径。

灵感来自这个post from Junio C. Hamano

一些命令不会在后一种情况下工作。
例如,“git diff <one-tree>”(代表了一种diff的工作树的部分目前与给定树)会失败。
注意:这不像“git diff”,它与索引相同。
使用这些命令(以及在工作树外部没有GIT_DIR的情况下运行时出错的其他命令),您真的需要在您感兴趣的子目录中。 。

1

不,不可能有远程$ GIT_DIR(也不可能在.git/objects/info/alternates有远程存储库)。 Git只是不这样工作。

2

我会假设,如果你问这个问题,你可能试图创建一个问题来解决。

想想为什么你就需要有一个奇异的Git仓库的人可以读取和直接从自己的远程机器写不出来,并试图将它们添加到这个问题,因为它似乎所有你就是全世界。试图像SVN一样使用Git。而那结束痛苦。

对于初学者来说,如果你不想做一个完整的深镜子只是创造了上游的补丁,请注意:

--depth <depth>
创建一个浅克隆与历史截断成指定的修订数量。一个浅层的 存储库有一些限制(你不能从中克隆或获取,也不能从 开始),但是如果你只关心一个历史悠久的大型项目的近期历史,想要发送修补程序作为补丁。 (git help clone

+1

这并不是不合理的。 Git挣扎的一个领域是很多非常大的文件,其中有很多历史记录发生了变化。也就是说,.git /目录非常大 - 可能比工作副本大得多。例如,.git可能不适合笔记本电脑的硬盘,但工作副本可能。此外,海报从来没有提到共享该远程存储库(这将是一个问题) – 2009-08-17 01:52:01

+0

我必须同意@Pat Notz。我担心你急于判断这是一个“X Y”问题。记住,仅仅因为你无法想象一个用例并不意味着它不存在。但是,鉴于Git不支持此功能的现实,您的回答非常有用。 – 2010-05-24 21:54:15

2

像其他人指出,Git是不写这样的工作方式。不过,我认为你可以在网络上安装你的.git目录。也许你可以将远程服务器挂载为NFS或sshfs这样的文件系统。这不是你想要的一般,但它可能适用于某些情况。

1

可能的(钝,但功能)解决方案:远程挂载您要使用的目录,并将.git目录软连接到挂载点。