首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件夹从git存储库链接到另一个存储库?

问如何将文件夹从git存储库链接到另一个存储库?
EN

Stack Overflow用户
提问于 2016-04-12 00:57:32
回答 2查看 92.5K关注 0票数 87

我想创建一个public repo来放一些来自我的主repo (私有)的样本文件。有没有办法软链接几个文件夹从一个git repo到另一个git repo?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-12 01:04:47

然后,您应该使用子模块来完成此任务。

子模块是同一根目录下的不同git存储库。

这样,您就可以在根存储库中的文件夹级别管理两个不同的项目

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

git submodule

将你的大项目分解为子项目,就像你到目前为止做的那样。

现在,使用以下命令将每个子项目添加到主项目中:

代码语言:javascript
复制
git submodule add <url>

一旦项目被添加到你的repo中,你必须初始化并更新它。

代码语言:javascript
复制
git submodule init
git submodule update

从Git1.8.2开始,添加了新的选项--remote

代码语言:javascript
复制
git submodule update --remote --merge

将fetch每个子模块的最新变化,merge them in,和check out的最新版本的子模块。

正如the docs所描述的那样:

--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/

票数 144
EN

Stack Overflow用户

发布于 2019-11-19 15:42:56

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

另外,CodeWizard的答案完美地回答了Y问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36554810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档