2017-06-21 87 views
0

我目前的远程回购有2个分支“主,测试” 我需要的是推动多个项目,我有这个测试分支,但我不不想在本地合并项目,这样我就可以保持每个项目历史的清洁。设置多个git推送到分段分支上的单个远程然后自动合并到主

文件夹结构或LOCALMACHINE /客户 /API /管理 /文档 每个文件夹都有自己的回购 “本地”。

我想他们都推到“远程/分支测试” 所以比测试分支文件夹结构将包含所有我的回购协议(如本地)

我怎样才能实现这一目标?我已经在网上试图寄托都,但大多数问题地址同步本地到远程,和我需要的是同步“远程与当地的”不中断我的工作流

编辑

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

  1. 每个地方的git里面我又增加了遥控指向主回购 git remote add deploy [email protected]:usern/mainrepo.git
  2. 结帐当前创建一个新的分支 git branch -b stage-deploy
  3. 添加并提交回购,以新的分支 git add . && git commit -m"message"
  4. 同步推新分支与主回购 git push -u deploy

现在我把这个子项目的内容部署到banch mainrepo/stage-deploy接下来我将这个分支与测试分支合并,因为每个项目都有自己的文件夹,所以不会发生冲突。 我合并后,我从两个回购站删除stage-deploy分支。我完成了。

我在每个项目中都这样做,现在我已将所有项目同步到一个回购站,并且此mainrepo/test已成功部署到成功测试服务器。

剩下的问题 当前要将'stage-deploy'分支与测试分支合并在一起,我从gitlab web界面手动完成它。那么我回到本地项目和结帐从本地回购删除分支太

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

+0

我建议也许看着使用submodules:https://git-scm.com/book/en/v2/Git-Tools-Submodules –

+0

谢谢,我试过了,并按照步骤,但后我推远程所有得到推送是一个.gitmodules文件指向我的机器上的本地目录,我从'“url = /Users/Zalaboza/vhosts/api/client/.git”克隆的文件夹内容不推送到远程 – Zalaboza

回答

0

您所要求的问题是多个本地回购将共享相同的远程引用,即测试分支。所有本地分支机构都可以设置为跟踪远程测试分支,但不会从多个项目推送到它,因为他们不同意历史记录的内容。当然你可以强制推送,但最终会导致垃圾收集器删除除了最后一个项目之外的所有项目,因为它是唯一可以在从裁判构建提交树时可以访问的项目。

考虑到这一切,一种方法是为测试分支指向的远程回购库上的每个项目创建一个分支(如果它有所不同,您可能希望测试分支有自己的提交并且不指向主分支上的提交)。然后让您本地回购站上的每个测试分支跟踪远程回购站上的自己的分支。从那里开始,您可以将本地主或测试分支推送到远程回购站的分行。

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

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

+0

谢谢,我结束了与非常相似的东西和它的工作正常,除了我不知道如何自动合并分支与终端测试 – Zalaboza