Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
手动合并GitLab合并请求_Git_Jenkins_Gitlab - Fatal编程技术网

手动合并GitLab合并请求

手动合并GitLab合并请求,git,jenkins,gitlab,Git,Jenkins,Gitlab,我想手动合并所有现有的合并请求。假设这些是我现有的合并请求: 1) feature1 --> master 2) feature2 --> master 对于某些业务需求,我需要将所有现有的合并请求分支合并到本地服务器上名为integration的中间分支。然后我需要合并与master的集成。在我的工作站上,我要做的是: $ git clone ... $ git fetch $ git checkout master $ git checkout -b integration

我想手动合并所有现有的合并请求。假设这些是我现有的合并请求:

1) feature1 --> master
2) feature2 --> master
对于某些业务需求,我需要将所有现有的合并请求分支合并到本地服务器上名为integration的中间分支。然后我需要合并与master的集成。在我的工作站上,我要做的是:

$ git clone ...
$ git fetch
$ git checkout master
$ git checkout -b integration

# Rebase feature1 with integration and merge
$ git checkout feature1
$ git rebase integration
$ git checkout integration
$ git merge feature1

# Rebase feature2 with integration and merge
$ git checkout feature2
$ git rebase integration
$ git checkout integration
$ git merge feature2

# Merge integration to master
$ git checkout master
$ git merge integration
$ git push origin master
但是当我在GitLab上检查合并请求时,我只看到第一个请求被合并。即使合并成功,第二个请求仍然打开。

在集成之上重新设置feature2的基址很可能会造成这样的情况,即feature2分支上的任何提交都不会在集成分支中结束

请记住,rebase不会修改现有的提交,而是用新的提交替换它们

试试这个:

# Rebase feature2 with integration and merge
$ git checkout feature2
$ git rebase integration

# This will update your pull request so gitlab can detect the merge
$ git push origin feature2

$ git checkout integration
$ git merge feature2

手动使用cron…作业好吧,如果是cron作业,它几乎不是手动的。抓取所有等待的合并请求,合并它们如何执行合并?使用git合并或Gitlab API?如果是git merge,您会将合并推回到Gitlab吗?很抱歉,解释有误。还有一些更复杂的过程来确定哪些请求正在等待合并。实际上,这一部分并不重要,您可以忘记Jenkins的工作,想象一下我正在本地将所有合并请求分支拉到我的工作站,并将它们合并到一个名为integration branch的分支。在此之后,我将合并集成分支,以掌握我的本地回购协议。最后,我将集成分支和主分支推送到GitLab。我没有使用GitLabAPI,也没有使用GitMerge等git命令来处理所有这些操作@谢谢你。这是正确的答案。不幸的是,在尝试了您的解决方案后,我在设计中发现了另一个问题。在两个不同的Jenkins作业中,feature1和feature2的合并并行地进行集成。因此,当我使用集成分支重新设置feature2的基础时,feature1的提交可能还不在集成分支中。当然,这是另一个故事,你的回答肯定回答了我的第一个问题。非常感谢。