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

时间:2016-04-11 16:57:32

标签: git github gitlab

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

2 个答案:

答案 0 :(得分:45)

然后你应该使用子模块来完成这项任务。

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

  

Submodules 允许将外部存储库嵌入到源树的专用子目录 中,总是指着一个特定的提交。

git submodule

将你的大项目打破到子项目,就像你到目前为止一样 现在使用以下命令将每个子项目添加到主项目中:

git submodule add <url>

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

git submodule init
git submodule update

Git 1.8.2 添加了新选项--remote

git submodule update --remote --merge

fetch 每个子模块中上游的最新更改 merge them in check out 子模块的最新版本。

正如the docs所描述的那样:

  

--remote

     

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

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

  

但是,如何在C中的错误修复方案中推送提交,这会影响与父层共享的代码?

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

这是子模块的一个例子 - 项目在另一个项目中,每个项目都是一个独立的项目。

enter image description here

git subtree

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

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

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

不是写下如何设置它并理解如何使用它,你可以简单地阅读这篇能够解释它的优秀文章。

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

答案 1 :(得分:1)

回答X问题而不是Y问题(xyproblem.info),您应该使用子模块来完成此任务。您应该创建一个.gitignore以从VCS中排除机密。或者,您可以使代码从VCS目录外部读取配置文件,因此可以将它们保存在〜/ .config中。将配置文件存储在私有存储库中几乎永远不是正确的方法。

P.S。 CodeWizard的答案完美地回答了Y问题。