我是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)
所以现在我想做的是:
mycleanups
与cleanup
合并,希望仅限于本地mycleanups
+ cleanup
)推送到cleanup
分支(,除非此步骤是不必要的)将cleanup
与origin
合并并推送这些更改。这个应该在Gitlab上需要某种“合并请求”(从cleanup
到origin
)...
我很乐意合并,但不确定我应该在本地严格执行什么以及应该推送到远程Gitlab服务器的内容。有人可以提供一系列具体步骤(使用示例git
命令!),了解如何在本地和远程实现这种多分支合并?
答案 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
。