Git 存储库位于另一个 git 存储库中

发布于 2024-09-14 00:54:33 字数 539 浏览 2 评论 0原文

我有以下目录结构:

  • g1/
    • .git
    • 一个
    • b
    • c/
      • .git
      • d
      • e

如您所见,我在存储库“g1”内有存储库“c”。当我使用以下命令时:

git clone g1 g2

我只得到以下目录结构:

  • g1/
    • .git
    • 一个
    • b
    • c/

目录“c”仍为空。有什么想法吗?

I have the following directories structure:

  • g1/
    • .git
    • a
    • b
    • c/
      • .git
      • d
      • e

As you can see, I have de repository "c" inside repository "g1". When I use the following command:

git clone g1 g2

I only get the following directories structure:

  • g1/
    • .git
    • a
    • b
    • c/

The directory "c" remains empty. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤云独去闲 2024-09-21 00:54:33

子模块(在Pro Git Book中讨论),帮助管理嵌套在主存储库中的存储库:

子模块允许外部存储库
嵌入专用的
源树的子目录,
总是指向特定的提交。

不要将它们与
遥控器,主要用于
同一项目的分支;
子模块适用于不同的
您想参与的项目
你的源树,而历史
两个项目的仍然保留
完全独立,你不能
修改子模块的内容
从主项目中。

子模块维护自己的
身份;子模块仅支持
存储子模块存储库
位置和提交 ID,所以其他
克隆超级项目的开发人员
可以轻松克隆所有子模块
相同的修订版。

Submodules (discussed in the Pro Git Book), helps manage repositories nested within a main repository:

Submodules allow foreign repositories
to be embedded within a dedicated
subdirectory of the source tree,
always pointed at a particular commit.

They are not to be confused with
remotes, which are meant mainly for
branches of the same project;
submodules are meant for different
projects you would like to make part
of your source tree, while the history
of the two projects still stays
completely independent and you cannot
modify the contents of the submodule
from within the main project.

Submodules maintain their own
identity; the submodule support just
stores the submodule repository
location and commit ID, so other
developers who clone the superproject
can easily clone all the submodules at
the same revision.

挥剑断情 2024-09-21 00:54:33

Git 2.5+(2015 年第 2 季度)在呈现子模块方面将更加精确。
由于子模块注册为 gitlink (索引中的一个特殊条目),它解释了为什么克隆父存储库时“c”为空。
另请参阅“git 子模块签出相同的提交”。
您需要一个 git submodule update --init 来填充“c”。

现在有更清楚的记录。

请参阅 提交 ec48a76(2015 年 5 月 27 日),作者:Stefan Beller (stefanbeller)
(由 Junio C Hamano -- gitster -- 合并于 提交 7df5c97,2015 年 6 月 11 日)

子模块文档:重新排序介绍性段落

最好在手册页开始时描述什么内容
子模块实际上是,而不是说它们不是什么。

git submodule 手册页 现在(2015 年 6 月)开始于:

子模块允许您在子目录中保留另一个 Git 存储库
您的存储库的。
另一个存储库有自己的历史记录,不会干扰当前存储库的历史记录。
这可用于具有外部依赖项,例如第三方库。

但是,当克隆或拉取包含子模块的存储库时,
默认情况下不会检查这些; “init”和“update
子命令将保持子模块签出并处于
在您的工作树中进行适当的修订

Git 2.5+ (Q2 2015) will be a bit more precise in how it present submodule.
Since a submodule is registered as a gitlink (a special entry in the index), that explains why 'c' is empty when the parent repo is cloned.
See also "git submodule checks out the same commit".
You need a git submodule update --init to fill-up 'c'.

That is now more clearly documented.

See commit ec48a76 (27 May 2015) by Stefan Beller (stefanbeller).
(Merged by Junio C Hamano -- gitster -- in commit 7df5c97, 11 Jun 2015)

submodule doc: reorder introductory paragraphs

It's better to start the man page with a description of what
submodules actually are, instead of saying what they are not.

The git submodule man page now (June 2015) starts with:

A submodule allows you to keep another Git repository in a subdirectory
of your repository.
The other repository has its own history, which does not interfere with the history of the current repository.
This can be used to have external dependencies such as third party libraries for example.

When cloning or pulling a repository containing submodules however,
these will not be checked out by default; the 'init' and 'update'
subcommands will maintain submodules checked out and at
appropriate revision in your working tree
.

晌融 2024-09-21 00:54:33

另一种方法是将 git 存储库存储为 bare< /a> 另一个 git 存储库中的存储库。

当您无法控制使用 inner git 存储库的 git 流程时,此方法将很有帮助。例如,如果第三方工具使用它。在这种情况下,它可能会尝试克隆给定路径的内部存储库。

我将 将 git 存储库存储在另一个 git 存储库中 的命令记录为一个裸存储库。

Another approach is storing git repository as a bare repository inside another git repository.

This approach will be helpful when you don't control the git flow for using inner git repository. For instance, if 3rd party tool uses it. In that case it may try to clone inner repository given a path to it.

I documented the commands for storing git repository inside another git repository as a bare repository.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文