我想创建一个公共仓库,用于存放主要仓库(私有)中的一些示例文件。是否有办法从一个Git仓库软链接几个文件夹到另一个Git仓库?
那么你应该使用子模块来完成这个任务。
子模块是在同一根目录下的不同git存储库。
这样,您可以在根存储库内的文件夹级别上管理2个不同的项目
子模块
允许将外部存储库嵌入到源代码树的专用子目录中,始终指向特定的提交。
git submodule
像之前一样,将您的大型项目分解为子项目。
现在,使用以下命令将每个子项目添加到您的主项目中:
git submodule add <url>
项目添加到您的仓库后,您需要初始化并更新它。
git submodule init
git submodule update
截至Git 1.8.2,新增了选项--remote
git submodule update --remote --merge
将会从每个子模块中获取最新更改,将其合并,并检出子模块的最新修订版本。
正如文档所描述的:
--remote
此选项仅针对更新命令有效。不使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态。
这相当于在每个子模块中运行 git pull。
但是,在影响与父层共享代码的C语言bug修复方案的情况下,我该如何推送提交?
同样:使用子模块将您的代码放置在主项目中作为其内容的一部分。在文件夹中本地拥有它和作为子模块的区别在于,在子模块中,内容被管理(提交)到一个不同的独立存储库中。
这是子模块的插图 - 一个项目位于另一个项目中,其中每个项目都是独立的项目。
Git subtree允许您将任何存储库插入到另一个存储库的子目录中。
与submodule
非常相似,但主要区别在于代码的管理位置。在子模块中,内容被放置在单独的存储库中并在那里进行管理,从而使您可以将其克隆到许多其他存储库中。
subtree
将内容作为根项目的一部分进行管理,而不是作为单独的项目。
无需编写如何设置和了解如何使用它的指南,您只需阅读这篇优秀的文章即可解释清楚。
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/