两个 git 存储库之间的符号链接是不是可能?

Posted

技术标签:

【中文标题】两个 git 存储库之间的符号链接是不是可能?【英文标题】:Is symbolic link between two git repositories possible?两个 git 存储库之间的符号链接是否可能? 【发布时间】:2020-09-15 17:06:49 【问题描述】:

我浏览了一些关于这个主题的文档,我真的对 git 子模块以及它如何实现符号链接感到困惑。

以下是我必须实现的方案: 我有两个 GitHub 存储库 repoArepoB。 我必须将repoA 中的一些文件链接到repoB,这样每当repoA 中的这些文件发生更改时,它也应该反映在repoB 上。

我的第一个问题是——这在 GitHub 上可行吗? 如果可能,我们怎样才能做到这一点?

我浏览过的大多数文件至少是 5 年前的。我知道这是一个老问题,但我只想知道现在是否有可能完成这项任务。

【问题讨论】:

您在使用子模块时遇到了哪些具体问题? 我创建了 repoB 的 master 分支作为 repoA 的子模块。但我的困惑是,如果我们在子模块(repoB 的主分支)中提交任何更改,它是否也会反映在 repoA 的子模块中?因为它不会发生在我身上! @CH。 子模块不会自动同步到远程,就像普通的 git 存储库在没有拉取的情况下不会同步到远程一样。根据您的安排,您可能需要执行git submodule update --remote 之类的操作来集成最新更改。 【参考方案1】:

我浏览了一些关于这个主题的文档,当大多数文档在询问符号链接时以创建子模块结束时,我真的很困惑。

而且文档是正确的。您想要实现的场景可以通过子模块和另一种方法实现。 GitHub 本身不提供任何功能来实现您想要做的事情。

要对子模块执行此操作,您需要做的就是添加子模块并使用它。不时更新子模块以跟踪子模块上游的更改并将这些更改与工作树的master同步。

我知道子模块一开始可能有点吓人,但它们是一个很棒的工具!另一种解决方案是将所需的存储库克隆到您的工作树中,并在需要时从其上游拉取更改。不过,这不会在工作树和新仓库中创建符号链接。

最好的

【讨论】:

我已经创建了 repoB 的 master 分支作为 repoA 的子模块。但我的困惑是,如果我们在子模块(repoB 的主分支)中提交任何更改,它是否也会反映在 repoA 的子模块中?因为它不会发生在我身上!

以上是关于两个 git 存储库之间的符号链接是不是可能?的主要内容,如果未能解决你的问题,请参考以下文章

Git远程/共享预提交钩子

如何链接(或解决)两个定义相同符号的第三方静态库?

在没有符号链接的情况下跨服务重用数据存储模型

加载具有相同符号的两个共享库时是不是存在符号冲突

强制 PHP 作曲家创建本地存储库的相对而非绝对符号链接

为啥在有符号和无符号表示之间转换一个数字?