合并请求
合并请求允许您交换对源代码所做的更改,并与同一项目中的其他人协作。
概述
合并请求(先生)是GitLab作为代码协作和版本控制平台的基础。它是否像名字所暗示的那样简单:a请求来合并从一个分支到另一个分支。
使用GitLab合并请求,您可以:
- 比较两者之间的变化分支机构
- 回顾和讨论建议的修改内联
- 实时预览更改的时间回顾应用程序为您的项目配置了吗
- 在每个分支的基础上构建、测试和部署您的代码GitLab CI / CD
- 防止合并请求在准备就绪之前被合并在制品的夫人
- 查看部署过程管道图
- 自动关闭问题这产生了合并请求中提议的实现
- 将其分配给任何注册用户,并根据需要多次更改受让人
- 分配一个里程碑并跟踪更广泛实施的发展
- 在整个项目中始终如一地组织您的问题和合并请求标签
- 添加时间估计和用于合并请求的时间时间跟踪
- 从UI解决合并冲突
- 启用快进合并请求
- 启用半线性历史合并请求作为另一个安全层,以确保管道在目标分支中传递
- 通过电子邮件创建新的合并请求
- 允许目标项目的维护者直接推到分叉by允许维护者编辑
与GitLab企业版,你还可以:
用例
a .假设你是一个软件开发人员,在一个团队中工作:
- 签出一个新的分支,并通过合并请求提交更改
- 你从团队中收集反馈
- 用于优化代码的实现代码质量报告(启动)
- 您可以使用GitLab CI/CD构建和测试更改
- 你向经理申请批准
- 你的经理用他的最终评估来推动一个承诺,批准合并请求,并设置为管道成功时合并(合并请求批准在GitLab Starter中可用)
- 您的更改将部署到生产环境手动操作用于GitLab CI/CD
- 您的实现已成功交付给客户
假设你是一个网页开发人员,为你的公司写一个网页:
- 签出一个新的分支,并通过合并请求提交一个新页面
- 你从评审员那里收集反馈
- 将预览您的更改回顾应用程序
- 你要求你的网页设计师实现它们
- 你要求批准来自你的经理(启动)
- 一旦批准,你的合并请求压缩和合并,使用GitLab Pages部署到登台(在GitLab Starter中可以使用Squash和Merge)
- 你的制作团队樱桃挑选合并提交到生产环境
每个项目合并请求
通过导航到,查看项目中的所有合并请求项目>合并请求.
当您访问项目的合并请求时,GitLab会将它们显示在一个列表中,您可以使用可用的选项卡通过打开和关闭来快速过滤。你也可以搜索并过滤结果.
每个组合并请求
查看该组中所有项目的合并请求,包括该组的所有子组的所有项目。导航到组>合并请求查看这些合并请求。该视图还具有打开和关闭合并请求选项卡。
你可以搜索并过滤结果从这里。
移除源分支
在创建合并请求时,选择“接受合并请求时删除源分支”选项,当合并请求被合并时,源分支将被删除。
该选项在现有的合并请求中也可见,位于合并请求按钮旁边,可以在合并前选择/取消选择。它只对用户可见主的权限在源项目中。
如果查看合并请求的用户没有删除源分支的正确权限,并且源分支被设置为删除,则合并请求小部件将显示“删除源分支”文本。
合并请求的授权
在GitLab中有两种主要的合并请求流的方法:
- 处理受保护的分支在单个存储库中
- 使用权威项目的分支
择优挑选变化
选择UI中的任何提交,只需单击择优挑选按钮中合并的合并请求或提交。
半线性历史合并请求
每次合并都会创建一个合并提交,但只有在可能进行快进合并时才会合并分支。这确保如果合并请求构建成功,目标分支构建在合并后也将成功。
导航到项目的设置,选择使用半线性历史合并提交选择下Merge Requests:合并方法并保存更改。
快进合并请求
如果您更喜欢线性的Git历史记录,以及在不创建合并提交的情况下接受合并请求的方式,您可以在每个项目的基础上进行配置。
管道成功时合并
当检查一个看起来准备合并但仍然有一个或多个CI作业正在运行的合并请求时,您可以将其设置为在CI管道成功时自动合并。这样,您就不必等待管道完成,并记得手动合并请求。
解决合并请求审查中的讨论评论
在解决注释的代码评审期间跟踪进度。解决评论可以防止您忘记处理反馈,并允许您隐藏不再相关的讨论。
解决冲突
当合并请求有冲突时,GitLab可能会在GitLab UI中提供解决这些冲突的选项。
通过电子邮件创建新的合并请求
这个特性需要传入的电子邮件由GitLab管理员配置,以供CE/EE用户使用,并且可以在GitLab.com上使用。
您可以通过向用户特定的电子邮件地址发送电子邮件来创建新的合并请求。该地址可在合并请求页面上通过单击通过电子邮件向此项目发送一个新的合并请求按钮。主题将被用作新合并请求的源分支名称,而目标分支将是项目的默认分支。消息体(如果不为空)将用作合并请求描述。你需要“以电邮回复”启用使用此特性。如果您的实例没有启用它,您可以要求GitLab管理员启用它。
找到引入变更的合并请求
请注意:该特性为在GitLab 10.5中实现.
当查看提交细节页面时,GitLab将链接到包含该提交的合并请求(如果包含多个合并请求,则为合并请求)。
这只适用于合并请求的最新版本中的提交——如果一个提交是在合并请求中,那么从该合并请求中重新基于,它们将不会被链接。
恢复的变化
GitLab实现了Git的强大功能,通过引入回复按钮中的合并请求和提交细节。
合并请求版本
每次推送到绑定到合并请求的分支时,就会创建一个新版本的合并请求diff。当您访问包含多个推送的合并请求时,您可以选择并比较这些合并请求差异的版本。
正在进行的工作合并请求
为了防止合并请求在完全准备好之前被意外接受,GitLab阻止了标记为的合并请求的“Accept”按钮进行中的工作.
合并请求差异文件导航
diff视图有一个用于文件导航的持久下拉菜单。当您滚动具有大量文件和/或这些文件中的许多更改的差异时,您可以通过下拉导航轻松跳转到任何更改的文件。
忽略合并请求差异视图中的空白更改
如果你点击隐藏空白更改按钮,你可以看到差异没有空格的变化(如果有的话)。这在特定的提交页面上也有效。
提示:你可以添加
? w = 1
在合并请求的diffs页上忽略任何空白更改。
实时预览与审查应用程序
如果你配置了回顾应用程序对于您的项目,您可以预览通过每个分支的合并请求提交给特性分支的更改。无需在本地签出分支、安装和预览;任何人都可以通过Review Apps链接预览您的所有更改。
提示
下面是一些技巧,可以帮助您在命令行中更有效地处理合并请求。
注意:该部分将来可能会移动到自己的文档中。
本地签出合并请求
合并请求包含来自存储库的所有历史记录,以及添加到与合并请求关联的分支的额外提交。下面是一些本地签出合并请求的技巧。
请注意,即使源项目是目标项目的一个分支(甚至是私有分支),您也可以在本地签出合并请求。
通过添加git别名在本地签出
将以下别名添加到您的~ / .gitconfig
:
(别名)Mr = !sh -c 'git fetch $1 merge-requests/$2/head: Mr -$1-$2 && git checkout Mr -$1-$2' -
现在您可以从任何存储库和任何远程检出特定的合并请求。例如,从GitLab中检出ID为5的合并请求,如GitLab中所示上游
远程的,做的事:
Git先生上游5
这将把合并请求取到本地mr-upstream-5
分支并检查一下。
. /配置
对于给定的存储库
通过修改本地签出控件中找到用于GitLab远程的部分. /配置
文件。它是这样的:
(远程“起源”)Url = https://gitlab.com/gitlab-org/gitlab-ce.gitFetch = +refs/heads/*:refs/remotes/origin/*
您可以使用以下命令打开该文件:
Git config -e
现在在上面的部分添加以下一行:
Fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
最后,它应该是这样的:
(远程“起源”)Url = https://gitlab.com/gitlab-org/gitlab-ce.gitFetch = +refs/heads/*:refs/remotes/origin/*Fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
现在你可以获取所有的合并请求:
Git获取来源...从https://gitlab.com/gitlab-org/gitlab-ce.git* [new ref] refs/merge-requests/1/head -> origin/merge-requests/1* [new ref] refs/merge-requests/2/head -> origin/merge-requests/2...
检查一个特定的合并请求:
Git checkout origin/merge-requests/1