Git子模块开发分支

Git子模块开发分支,git,version-control,continuous-integration,git-submodules,Git,Version Control,Continuous Integration,Git Submodules,我第一次使用git子模块;所以这可能是显而易见的,但我还不知道如何解决它 背景:我正在创建一个公共存储库,作为多个项目的子模块包含其中。这些项目和子模块有几个开发分支,我希望项目的特定分支指向子模块中的特定分支。我不介意使用脚本来设置CI以实现自动化。 比如说, 项目A:硕士、A-1、A-2 项目B:硕士,B-1,B-2 子模块:主模块、A-1、A-2、B-1、B-2 问题:这可能吗?对于这种情况,子模块是正确的选择吗?如果是,如何设置 提前谢谢 只要你愿意,这是可能的 git子模块添加-b[]

我第一次使用git子模块;所以这可能是显而易见的,但我还不知道如何解决它

背景:我正在创建一个公共存储库,作为多个项目的子模块包含其中。这些项目和子模块有几个开发分支,我希望项目的特定分支指向子模块中的特定分支。我不介意使用脚本来设置CI以实现自动化。 比如说,

项目A:硕士、A-1、A-2

项目B:硕士,B-1,B-2

子模块:主模块、A-1、A-2、B-1、B-2

问题:这可能吗?对于这种情况,子模块是正确的选择吗?如果是,如何设置


提前谢谢

只要你愿意,这是可能的

git子模块添加-b[]。

从这里开始,在您的每个项目中,一个简单的
git子模块更新--remote
将子模块的内容从
/
更新到最新的
HEAD
。您还可以使用
(git子模块
添加单个分支的另一种方法)

关于如何将子模块的分支添加到不同的repo中 您只需使用以下命令将子模块repo的分支添加到主repo的文件夹中:

git subtree add --prefix=<folder name> <URL for the submodule repo> <branch name>
  • 要将子模块
    B-1
    分支添加到projectB的
    B-1
    分支,可以使用以下命令:

    # In local project A repo
    git checkout master
    git subtree add --prefix=master <URL for the submodule repo> master
    git push origin master
    
    # In local project B repo
    git checkout B-1
    git subtree add --prefix=B-1 <URL for the submodule repo> B-1
    git push origin B-1
    
  • 用于将主回购协议的子树更改推送到子模块回购协议的方法 如果要直接从主repo的子树将更改推送到子模块repo,可以使用以下命令:

    git subtree push --prefix=<folder name> <URL for the submodule repo> <branch name>
    

    谢谢你的回答!我将尝试一下。感谢您深入解释子树方法。这基本上就是我在这里想要实现的。您是否看到对子模块使用子树有任何明显的缺点?@Samarth否,通过与子模块的比较,子树没有缺点。使用git子树abd子模块的大多数情况如下:将一个分支从一个git回购添加到另一个——使用gitsutree;要将整个git repo添加到另一个git repo,请使用子模块。
    git subtree pull --prefix=<folder name> <URL for the submodule repo> <branch name>
    
    # In local project B repo
    git checkout B-1
    git subtree pull --prefix=B-1 <URL for the submodule repo> B-1
    git push origin B-1
    
    git subtree push --prefix=<folder name> <URL for the submodule repo> <branch name>
    
    # In local project A repo
    git checkout A-1
    # Make the commit changes in the folder A-1
    git subtree push --prefix=A-1 <URL for the submodule repo> A-1
    git push origin A-1