Git子模块开发分支

萨玛斯

我是第一次使用git子模块;所以这可能很明显,但我还不知道如何解决。

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

项目A:主,A-1,A-2

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

子模块:主站,A-1,A-2,B-1,B-2

问题:这可能吗?子模块是否适合这种情况?如果是,该如何设置?

提前致谢!

您也可以使用git subtreegit submodule添加单个分支的另一种方法)。

对于将子模块的分支添加到不同仓库中的方式

您只需要使用以下命令将子模块存储库的分支添加到主存储库的文件夹中:

git subtree add --prefix=<folder name> <URL for the submodule repo> <branch name>
  • 例如将submodulemaster分支添加到projectA的master分支,可以使用以下命令:

    # In local project A repo
    git checkout master
    git subtree add --prefix=master <URL for the submodule repo> master
    git push origin master
    
  • 要将子模块B-1分支添加到projectB的B-1分支,可以使用以下命令:

    # 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
    

有关在主存储库中更新子树的方法:

如果子模块的分支已进行了新更改,则可以通过以下方法更新主存储库中存在的子树:

git subtree pull --prefix=<folder name> <URL for the submodule repo> <branch name>
  • 例如,如果子模块B-1分支使用新更改进行更新,则可以B-1如下相应地更新projectB中文件夹:

    # 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>
  • 例如将更改从ProjectAA-1分支(A-1文件夹)送到子模块存储库,可以使用以下命令:

    # 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
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章