这个问题出于好奇而不是任何实际的问题,但我可以有效地让我的$ GIT_DIR成为git://example.com/repo.git/?所以没有.git文件夹 - 每一次提交等都会经历网络开销。git没有.git文件夹 - 一个远程git-dir
编辑: 一个潜在用途的情况下可能是试图做一个简单的“出口”像SVN,但事实证明,问题的答案here
这个问题出于好奇而不是任何实际的问题,但我可以有效地让我的$ GIT_DIR成为git://example.com/repo.git/?所以没有.git文件夹 - 每一次提交等都会经历网络开销。git没有.git文件夹 - 一个远程git-dir
编辑: 一个潜在用途的情况下可能是试图做一个简单的“出口”像SVN,但事实证明,问题的答案here
$GIT_DIR
,introduced 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
的情况下运行时出错的其他命令),您真的需要在的您感兴趣的子目录中。 。
不,不可能有远程$ GIT_DIR(也不可能在.git/objects/info/alternates
有远程存储库)。 Git只是不这样工作。
我会假设,如果你问这个问题,你可能试图创建一个问题来解决。
想想为什么你就需要有一个奇异的Git仓库的人可以读取和直接从自己的远程机器写不出来,并试图将它们添加到这个问题,因为它似乎所有你就是全世界。试图像SVN一样使用Git。而那将结束痛苦。
对于初学者来说,如果你不想做一个完整的深镜子只是创造了上游的补丁,请注意:
--depth <depth>
创建一个浅克隆与历史截断成指定的修订数量。一个浅层的 存储库有一些限制(你不能从中克隆或获取,也不能从 开始),但是如果你只关心一个历史悠久的大型项目的近期历史,想要发送修补程序作为补丁。 (git help clone
)
这并不是不合理的。 Git挣扎的一个领域是很多非常大的文件,其中有很多历史记录发生了变化。也就是说,.git /目录非常大 - 可能比工作副本大得多。例如,.git可能不适合笔记本电脑的硬盘,但工作副本可能。此外,海报从来没有提到共享该远程存储库(这将是一个问题) – 2009-08-17 01:52:01
我必须同意@Pat Notz。我担心你急于判断这是一个“X Y”问题。记住,仅仅因为你无法想象一个用例并不意味着它不存在。但是,鉴于Git不支持此功能的现实,您的回答非常有用。 – 2010-05-24 21:54:15
像其他人指出,Git是不写这样的工作方式。不过,我认为你可以在网络上安装你的.git目录。也许你可以将远程服务器挂载为NFS或sshfs这样的文件系统。这不是你想要的一般,但它可能适用于某些情况。
可能的(钝,但功能)解决方案:远程挂载您要使用的目录,并将.git目录软连接到挂载点。
你的问题措辞可怕,语法是我可能知道答案,但不能解决问题。 – 2009-08-16 10:03:44
我其实同意。我现在重新写了它,希望更好:) – 2009-08-18 06:52:59