将许多小项目合并为一个多项目,同时在Git中保留历史和分支

时间:2014-05-04 20:41:47

标签: git version-control git-merge

我有许多小项目,每个项目都在自己的存储库中。现在我需要从所有小项目中获得一个Gradle多项目构建。我创建了一个新的Git存储库,添加了所需的Gradle文件和目录结构,并在合并时打了一个墙。我尝试过其他线程的建议,比如子项目和子树,但我还需要更多:

每个项目都有两个主要分支 - masterdevelop。每个都有许多其他功能分支,每个功能分支都有自己唯一的名称(所有项目中没有两个名称相同)。

我知道如何添加子项目,合并master分支并保留提交历史记录。我不知道如何保留分支数据。换句话说,我想:

  1. 不仅合并master而且develop合并所有项目并保留其历史记录。

  2. 保留所有小功能分支。

  3. 不是每个分支都手动完成。

1 个答案:

答案 0 :(得分:0)

基本上,当你合并master个分支时,当你有一个回购时,你可以

git checkout master
git merge myRemote/master

如何在每个repo / branch的循环中执行它?

例如:

#Retrieving master branches
git checkout master
for remote in $(git remote); do
  git merge $remote/master
done

#Retrieving develop branches
git checkout develop
for remote in $(git remote); do
  git merge $remote/develop
done

#Retrieving feature branches, using the fact that no two names are the same accross all projects
for remote in $(git remote); do
  for branch in $(git branch -a | grep $remote | sed 's#remotes/$remote/##'); do
    git checkout $remote/$branch
    git branch $branch
  done
done