如何将文件夹从git repo链接到另一个repo?

Man*_*noj 32 git github gitlab

我想创建一个公共仓库,从我的主仓库(私人)中放入一些样本文件.有没有办法软件链接从git仓库到另一个git仓库的几个文件夹?

Cod*_*ard 62

然后,您应该使用子模块执行此任务.

子模块是同一根下的不同git存储库.
这样,您可以在根存储库中的文件夹级别管理2个不同的项目

Submodules 允许外部存储库嵌入源树的专用子目录中,始终指向特定的提交.


git submodule

到目前为止,将您的大项目分解为子项目.
现在使用以下命令将每个子项目添加到主项目:

git submodule add <url>
Run Code Online (Sandbox Code Playgroud)

项目添加到您的仓库后,您必须初始化并更新它.

git submodule init
git submodule update
Run Code Online (Sandbox Code Playgroud)

由于Git的1.8.2新的选项--remote加入

git submodule update --remote --merge
Run Code Online (Sandbox Code Playgroud)

fetch来自每个子模块上游的最新变化merge them in,以及子模块check out的最新版本.

正如文档描述的那样:

--remote

此选项仅对update命令有效.不使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态.

这相当于在每个子模块中运行git pull.


但是,如何在C中的bug修复场景中推送提交,这会影响与父层共享的代码?

再次:使用子模块将您的代码作为其内容的一部分放在主项目中.将其本地放在文件夹中或将其作为子模块的一部分之间的区别在于,在子模块中,内容被管理(提交)到不同的独立存储库.


这是子模块的示意图 - 项目在另一个项目中,其中每个项目都是一个独立的项目.

在此输入图像描述


git subtree

Git子树允许您将任何存储库作为另一个存储库的子目录插入

非常相似,submodule但主要区别在于管理代码的位置.在子模块中,内容放在一个单独的仓库中,并在那里进行管理,允许您将其克隆到许多其他仓库.

subtree 将内容作为根项目的一部分进行管理,而不是在单独的项目中进行管理.

而不是写下如何设置和理解如何使用它,你可以简单地阅读这篇优秀的文章,这将解释一切.

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/

  • 对SubModules和SubTrees的很好的参考.我没有看到您明确地在目标存储库中引用源存储库的子目录. (6认同)