合并多个Git分支并将它们推送到远程服务器(Gitlab)

时间:2016-01-14 12:32:39

标签: git gitlab git-merge pull-request

我是Git(Gitlab)分支和合并的新手,当然,开箱即用,有一个相当复杂的场景。

repo(“myapp”)有一个名为“cleanup”的功能分支。我被要求在本地分支 分支,添加一些更改,将这些更改与cleanup合并,然后将cleanup与主线合并(“origin”?) 。所以我克隆了myapp,切换到cleanup分支,然后将其分支并调用该分支mycleanups

origin/mainline (exists on remote Gitlab server as well as locally)
    +---> cleanup (exists on remote Gitlab server as well as locally)
          +---> mycleanups (just exists locally)

所以现在我想做的是:

  1. mycleanupscleanup合并,希望仅限于本地
  2. 然后将该合并(mycleanups + cleanup)推送到cleanup分支(,除非此步骤是不必要的
  3. cleanuporigin合并并推送这些更改。这个应该在Gitlab上需要某种“合并请求”(从cleanuporigin)...

    我很乐意合并,但不确定我应该在本地严格执行什么以及应该推送到远程Gitlab服务器的内容。有人可以提供一系列具体步骤(使用示例git命令!),了解如何在本地和远程实现这种多分支合并?

2 个答案:

答案 0 :(得分:1)

执行:

  

git checkout cleanup

     

git merge mycleanup

     

git pull origin cleanup

     

git push origin cleanup

答案 1 :(得分:1)

听起来mycleanup分支是不必要的。

您已获得克隆,因此您需要签出cleanup分支(创建远程分支cleanup的本地副本):

git checkout cleanup

进行一些更改。提交他们。

此时,您的本地分支位于远程分支之前。您可以使用git status查看此信息。

在此之后,运行git push。如果没有其他人推进过渡,它会接受它。否则,它将拒绝它并且您需要从远程引入更改(合并 - git pull)。

在执行清理检查时,它会将其设置为跟踪同名的远程分支。这是为了将来的拉动和推动 - 所以它知道在哪里推进和拉动。

在此之后,在Gitlab中,它应该在Merge Requests页面中显示最近推送的分支。然后,您可以点击" New Merge Request"并且它将提交给项目的所有者,以便他们在闲暇时查看并合并到mainline