使用git子模块创建多个远程分支

时间:2016-12-05 22:02:44

标签: git github version-control git-submodules

我第一次使用git子模块。苦苦挣扎于了解如何全面创建分支并将其添加到所有远程回购。

目前我的文件结构类似于以下内容:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void) {
    char *myStr = "a,b,c";//unknown size string.
    size_t len = strlen(myStr);//check size
    char *copyStr = malloc(len + 1);
    strcpy(copyStr, myStr);

    char *items = malloc((len+1)/ 2);
    size_t n = 0;

    char *itemp = strtok(copyStr, ",");
    while(itemp != NULL){
        items[n++] = *itemp;
        itemp = strtok(NULL, ",");
    }
    //check print
    for(size_t i = 0; i < n; ++i){
        printf("%c\n", items[i]);
    }
    free(copyStr);
    free(items);
    return 0;
}

如果我在父仓库上创建分支:

-parent_repo
  |
  |_ submodule_1
  |_ submodule_2
  |_ submodule_3
  |_ submodule_4
  |_ submodule_5
  |_ submodule_6
  |_ submodule_7

我想在所有子模块中创建一个分支,包括父模块。之后,所有分支都被远程推送到每个子模块及其受尊重的存储库。

尝试了以下步骤:

(master) $ git checkout -b feature/my_feature
(feature/my_feature) $ git commit -m "created my_feature"
(feature/my_feature) $ git push -u origin feature/my_feature

..刚刚失败。找不到第一个命令。

..如果我这样做:

$ git submodule foreach -b branch_name
$ git push --recurse-submodules=on-demand
$ git submodule foreach "(git checkout branch_name; git pull)&"

git返回:

$ git config -f .gitmodules submodule.submodule_1.branch branch_name
$ git submodule update --remote

1 个答案:

答案 0 :(得分:3)

请参阅Submodule tips

  

例如,假设我们想要启动一个新功能或执行错误修正,我们已经在几个子模块中进行了工作。
  我们可以轻松地隐藏所有子模块中的所有工作:

$ git submodule foreach 'git stash'
Entering 'CryptoLibrary'
No local changes to save
Entering 'DbConnector'
Saved working directory and index state WIP on stable: 82d2ad3 Merge from origin/stable
HEAD is now at 82d2ad3 Merge from origin/stable
  

然后我们可以在所有子模块中创建一个新分支并切换到它:

$ git submodule foreach 'git checkout -b featureA'
Entering 'CryptoLibrary'
Switched to a new branch 'featureA'
Entering 'DbConnector'
Switched to a new branch 'featureA'

然后你仍然需要在父仓库中创建相同的分支,添加,提交和推送,因为所有子模块仓库都会发生变化。

但请记住:那些是不同的分支(即使它们具有相同的名称),每个分支都特定于其自己的仓库(父仓库或子模块仓库)。