首页 > 解决方案 > 如何将两个远程 git 存储库链接到一个本地存储库并从两者灵活同步?

问题描述

我一直在使用 Git (Bitbucket),并且我知道如何将多个远程存储库链接到一个本地存储库,正如我在许多在线可用教程中看到的那样,例如https://jigarius.com/blog/multiple-git-远程存储库和这个https://www.cloudsavvyit.com/2464/how-to-use-git-with-multiple-remote-repositories/

我想要达到的目标几乎没有什么不同。我有两个远程存储库,比如说repo1repo2. 两个存储库都包含 3 个分支 -master分支、release/1.0分支和release/2.0分支。我的项目是一个通用的 Java 应用程序。repo1仅包含 java 文件,而repo2仅包含 JAR 文件,它们是二进制文件。

我没有像 maven 这样的依赖管理系统。我正在尝试实现这一点 - 当我切换到release/1.0分支时,我的 java 文件将根据更改,repo1JAR 文件也应根据repo2. 同样,当我切换到release/2.0分支时,我的 java 文件应该根据更改,repo1JAR 文件也应该根据repo2. JAR 文件在发布分支中有所不同。

我不会将 JAR 文件推送到repo2,我没有这样的用例。我也只会将 Java 文件推送到repo1.

这可能吗?还是有任何解决方法可以实现这一目标?

谢谢。

标签: javagitbitbucket

解决方案


如果您的文件已正确分离,则可以使用 git 子模块。

基本上,您在 git 中将 repo2 作为依赖项添加到 repo1。这样,您就可以在本地拥有所有文件,但将它们分成两个存储库。但是,当您为 repo1 创建一个新分支时,您还必须为 repo2 创建一个新分支并将其链接到新的 repo1 分支。

通常这就像一个依赖通常会:你的子模块是 repo2 的特定提交。当你想更新时,你更新到一个新的提交。因此,您必须解决此问题才能实现您的特定用例。

编辑:

对于初学者,您可以使用 向您的 repo 添加一个子模块git submodule add http://repo2.git,这将创建一个新文件夹repo2,这将是您的 repo2 的根目录。在那里你可以像在另一个仓库中一样工作。您的 repo 只会添加该配置。

当您想要更新时,您可以转到repo1根目录并使用git submodule update --remote.


推荐阅读