代码之家  ›  专栏  ›  技术社区  ›  Alexander Bird

没有.git文件夹的git-远程git目录

git
  •  6
  • Alexander Bird  · 技术社区  · 15 年前

    这个问题是出于好奇而提出的,而不是出于任何实际的考虑,但是我的$git_dir是否可以有效地是git://example.com/repo.git/?所以不会有.git文件夹——每个提交等都会通过网络开销。

    编辑: 一个潜在的用例可能是试图做一个简单的“导出”,比如SVN,但事实证明这个问题得到了回答。 here

    5 回复  |  直到 15 年前
        1
  •  3
  •   VonC    15 年前

    $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> “(表示一种区分 部分 你是工作树的 目前在 在给定的树上)会失败。
    注意:这不像“ git diff “,这与索引的作用相同。
    使用这些命令(以及在没有命令的情况下运行时出错的其他命令) GIT_DIR 在工作树之外),你真的应该 在里面 您感兴趣的子目录。 .

        2
  •  2
  •   Kent Fredric    15 年前

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

    想想看 为什么? 你需要有一个单一的Git存储库,人们可以直接从他们自己的远程机器上读写,并尝试将它们添加到问题中,因为似乎在全世界你都在尝试使用类似于Git的SVN。那 在痛苦中结束。

    首先,如果您不想制作一个完整的深镜,只为上游创建一个补丁,请注意:

    --depth <depth>
    创建一个将历史记录截断为指定修订数的浅克隆。浅层 存储库有许多限制(您不能克隆或从中提取,也不能从中推送或进入 但如果你只对一个大型项目最近的历史感兴趣 历史悠久,希望以补丁的形式发送修复程序。 ( git help clone )

        3
  •  2
  •   Pat Notz    15 年前

    正如其他人所指出的,Git并不是以这种方式工作的。但是,我认为您可以将.git目录安装在网络上。也许您可以将远程服务器作为文件系统(如nfs)或 sshfs . 这并不像你想象的那么普遍,但在某些情况下可能会奏效。

        4
  •  1
  •   Jakub Narębski adamtaub    15 年前

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

        5
  •  1
  •   Jeff Ferland    15 年前

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