设置多个git以在临时分支上推送到单个远程,然后自动合并到主控

时间:2017-06-21 15:20:18

标签: git github git-remote

我当前的远程仓库有2个分支“主,测试” 我需要的是将我拥有的多个项目推入这个测试分支,但我不想在本地合并项目,这样我就可以保持每个项目的历史记录清洁。

文件夹结构或localmachine /客户 / API /管理员 /文档 每个文件夹都有自己的repo“local”。

我想将它们全部推送到“远程/测试分支” 所以测试分支文件夹结构将包含我的所有repos(如本地)

我怎么能做到这一点?我已尝试在线翻译,但大多数问题地址同步本地到远程,我需要的是同步“远程本地”而不会中断我的工作流程

修改

我设法使用以下命令做我需要的。

  1. 在每个本地git里面我添加了另一个指向主回购的遥控器 git remote add deploy git@git.website.com:usern/mainrepo.git
  2. 结帐当前创建新分支 git branch -b stage-deploy
  3. 添加并提交repo到新分支 git add . && git commit -m"message"
  4. 同步推送这个新分支与主回购 git push -u deploy
  5. 现在我已将此子项目的内容部署到banch mainrepo/stage-deploy接下来我将此分支与测试分支合并,因为每个项目都有自己的文件夹,因此不会发生冲突。 合并后,我从两个repos中删除stage-deploy分支。我已经完成了。

    我在每个项目中执行此操作,现在我将所有项目同步到一个repo,并且此mainrepo / test有posthocs正在成功部署到测试服务器。

    剩余问题 目前要将'stage-deploy'分支与测试分支合并,我从gitlab web界面手动完成。然后我回到本地项目并结账也从本地仓库删除分支,

    如何自动合并新创建的分支?

1 个答案:

答案 0 :(得分:0)

您要问的问题是多个本地存储库将共享相同的远程引用,即测试分支。可以设置所有本地分支以跟踪远程测试分支,但由于他们不同意历史记录的内容,因此不会从多个项目推送到该分支。当然你可以强制推送,但这最终会导致垃圾收集器删除你推送的最后一个项目,因为它是从refs构建提交树时唯一可达的项目。

考虑到所有这些,一种方法是为远程仓库上的每个项目创建一个分支,测试分支指向该分支(如果它有所不同,您可能希望测试分支拥有自己的提交,仍然没有指向master分支上的提交)。然后在本地repos轨道上创建每个测试分支,在远程仓库上创建自己的分支。从那里开始,您可以将本地主服务器或测试分支机构推送到远程服务器上的反向分支机构。

所有这一切的一个问题是,如果在多个回购中具有相同名称的分支。在这种情况下,您必须在远程仓库上强制执行唯一的分支名称,或者将所有项目放在一个仓库中,并探索名称空间和可能的多个工作树之类的内容。

此外,您必须小心只推动您想要的分支并正确跟踪,否则推 - - 或推 - 镜可能会导致头痛。