评审及管理合并请求
合并请求是在项目中更改文件的主要方法,通过创建并提交合并请求来提出更改,然后将其审核并接受(或拒绝)。
评审合并请求
打开 项目>合并请求列表,可以查看项目中的所有合并请求,并且您可以快速按打开和关闭可用的选项卡来进行过滤,您还可以搜索和过滤结果。
半线性历史合并请求
每个合并创建一个合并提交,但是只有在可能进行快速合并的情况下才合并分支。这样可以确保如果合并请求构建成功,则合并后目标分支构建也将成功。
进入到项目设置页,在 合并请求:合并方法下选择 使用半线性历史 合并合并选项,然后保存更改。
查看不同版本文件变更
更改选项卡位于主要合并请求详细信息下方,并且在讨论选项卡旁边,显示了分支或提交之间文件的更改。这种对文件更改的视图也称为diff ,默认情况下,差异视图将合并请求分支中的文件与目标分支中的文件进行比较。
Diff 视图包含以下内容:
- 文件的名称和路径
- 添加和删除的行数
- 用于以下选项的按钮:
- 文件讨论显示/隐藏开关,在查看用于内联评论时非常有用
- 在合并请求的分支中编辑文件
- 显示完整文件,方便您要查看上下文中文件其余部分的更改
- 查看当前提交时的文件
- 对于有更改的行,将突出显示详细的更改内容
合并请求 diff 导航
在 更改选项卡中查看更改时,可以使用文件树或文件列表来浏览差异。 在具有许多更改的大型差异中滚动时,可以使用文件树或文件列表快速跳转到任何更改的文件。
逐个文件查看 diff
对于较大的合并请求,有时一次查看单个文件可能会很有用。要启用单个文件 diff 导航时,请从右上角导航栏上的头像,单击**"设置"** ,然后转到左侧边栏上的**"偏好设置"** , 向下滚动到" 个性化"部分,然后在合并请求的"更改"标签上选择**"一次显示一个文件"** . 点击保存更改以应用.
从那里,在查看合并请求的" 更改"选项卡时,一次只能看到一个文件. 然后,您可以单击按钮上一个和下一个以查看其他已更改的文件.
合并请求提交导航
要在合并请求中的提交之间无缝导航,请从 提交选项卡中,单击其中一个提交以打开单提交视图,之后您可以通过单击页面右上角的Prev和Next按钮或使用X
和C
键盘快捷键在提交之间进行切换。
合并请求 diff 时展开
默认情况下,差异仅显示文件中已更改的部分。要查看更改上方或下方的更多未更改行,请单击" 向上 **扩展"**或" 向下扩展"图标,您也可以单击显示未更改的行以展开整个文件。
当查看合并请求的更改选项卡时,如果仅重命名了某个文件,则可以通过单击显示文件内容展开它以查看全部内容 。
隐藏空白更改
如果单击隐藏空白更改按钮,则可以看到没有空白更改的差异(如果有的话),在查看某个提交的页面上也支持这个功能。
**提示:**您可以在合并请求的差异页面上附加
?w=1
,以忽略任何空格更改。
行内代码评审
我们提供了一种在合并请求中更改文件的任何部分中进行注释讨论的方法,可以在"合并请求"差异页面左侧单击评论按钮以展开差异行并留下评论,就像更改行一样。
关联功能
还有大量与合并请求关联的功能:
功能 | 描述 |
---|---|
批量编辑合并请求 | 同时更新多个合并请求的属性 |
Cherry-pick 变更 | 只需在合并的合并请求或提交中单击Cherry-pick按钮,即可在页面中 Cherry-pick 任何选择 |
快进合并 | 有关线性 Git 历史记录以及接受合并请求而不创建合并提交的方法 |
合并请求版本 | 选择并比较合并请求差异的不同版本 |
解决冲突 | 可以在界面中来解决某些合并请求冲突 |
Revert 更改 | 从合并请求中的任何提交还原更改 |
Tips
以下是一些可帮助您在命令行中更有效地处理合并请求的 Tips:
本地合并合并请求
合并请求包含来自代码仓库的所有历史记录,以及添加到与合并请求关联的分支的其他提交。以下是一些在本地检出合并请求的技巧。
请注意,即使源项目是目标项目的分支(甚至是私有分支),也可以在本地签出合并请求。
通过别名设置签出合并请求
将以下别名添加到~/.gitconfig
:
[alias]
mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -
现在,您可以从任何代码仓库和任何远程签出特定的合并请求,例如,执行以下操作可以从origin
远程服务器签出 ID 为 5 的合并请求请:
git mr origin 5
这会将合并请求提取到本地mr-origin-5
分支中,并检出它。
通过在 config 文件中添加代码仓库签出
在.git/config
文件中找到适用于 remote 的部分,找到类似下面的这段配置:
[remote "origin"]
url = https://codechina.csdn.net/codechina/awsome-project.git
fetch = +refs/heads/*:refs/remotes/origin/*
您可以使用以下方式打开文件:
git config -e
现在,将以下行添加到上面的部分:
fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
最后,它应如下所示:
[remote "origin"]
url = https://codechina.csdn.net/codechina/awsome-project.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/merge-requests/*/head:refs/remotes/origin/merge-requests/*
现在,您可以获取所有合并请求:
git fetch origin
...
From https://codechina.csdn.net/codechina/awsome-project.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
以上所有操作均可通过git-mr
脚本完成。