Git存储库中的Git存储库[重复]
Posted
技术标签:
【中文标题】Git存储库中的Git存储库[重复]【英文标题】:Git repository within Git repository [duplicate] 【发布时间】:2011-05-28 20:52:43 【问题描述】:我有一个主 git 存储库 A,我们在主项目的子目录中使用另一个 git 存储库 B 的源代码。 现在最好在这个使用的子目录中的 A 存储库中签出 B 存储库。 如果其他人随后克隆了存储库,他当然应该获得我们的主存储库 A,并在其中自动获取 B 存储库。
让我可视化目录结构:
+ main_repository - 主存储库的根目录 + src - 包含源代码的目录 + foreignRepo - 这应该是另一个 git repo 的根目录 + 二进制文件 + 其他这必须在远程存储库中也知道,只是本地副本对我没有帮助,因为其他人检查了这个并且必须能够编译所有东西。
【问题讨论】:
一篇博文解释了每种方法的优缺点Git Submodule: Git Subtree。 【参考方案1】:在 git 版本 1.7.11 及更高版本中使用 git subtree
。 git subtree
is superior to git submodule 因为:
git subtree
不需要您的存储库的用户学习任何新内容,他们可以忽略您使用子树来管理依赖项这一事实
git subtree
不会像 git submodule
那样添加新的元数据文件(例如
.gitmodule
)
可以修改子树的内容,而无需在其他地方拥有依赖项的单独存储库副本
另外,如果您需要detach a subtree of your existing repository into a new repository,git subtree split
可以帮助您。
2020 年 2 月更新:现在我更喜欢 subrepo。
【讨论】:
【参考方案2】:你会想了解Git submodules。
【讨论】:
【参考方案3】:您可以在不使用子模块的情况下嵌套两个 git repo。假设 ChildRepo 是 ParentRepo 的子目录,两者都是 git 仓库。
+ ParentRepo
- ChildRepo
如果您将文件添加到 ChildRepo,ParentRepo 将忽略它。当您提交它时,它将被添加到 ChildRepo。无法将 ChildRepo 中的文件添加到 ParentRepo。
更多信息:Nested GIT repo gotchas!
【讨论】:
我刚刚尝试在父 repo 中嵌套一个子 repo。当我将文件添加到子仓库时,我做了cd ../
和 git status
并且父仓库 not 忽略了新文件。
您需要将ChildRepo
放入.gitignore
吗?以上是关于Git存储库中的Git存储库[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将文件从一个文件夹移动到同一git存储库中的另一个文件夹保留历史记录[重复]