提交 83460960 编写于 作者: Lab机器人's avatar Lab机器人

draft

上级 7e95325c
# 与群组共享项目[](#与群组共享项目 "Permalink") # 与组织共享项目[](#share-projects-with-other-groups "Permalink")
您可以与其他[小组](../../group/index.html)共享项目. 这样就可以通过一个操作将一组用户添加到项目中. 您可以与其他[组织](../../group/index.html)共享项目,这样就可以通过一个操作将一个组织的全部用户添加到项目中。
## Groups as collections of users[](#groups-as-collections-of-users "Permalink") ## 用户项目集合[](#groups-as-collections-of-users "Permalink")
主要用于[创建项目集合](../../group/index.html) ,但是您还可以利用以下事实:组定义了*用户*集合,即组成员. 织主要用于[创建项目集合](../../group/index.html) ,但是您还可以利用组织的以下特定:组定义了*用户*集合,即组成员。
## Sharing a project with a group of users[](#sharing-a-project-with-a-group-of-users "Permalink") ## 与组成员共享项目[](#sharing-a-project-with-a-group-of-users "Permalink")
在 GitLab 中授予一组用户(例如"工程")访问项目(例如" Acme 项目")的主要机制是使"工程"组成为" Project Acme"的所有者. 但是,如果" Acme 项目"已经属于另一个小组,比如"开源",该怎么办? 这是可以使用组共享功能的地方. 授予某个组织的用户(例如"工程")访问项目(例如" Acme 项目")的主要机制是使"工程"组成为" Project Acme"的所有者,但是,如果" Acme 项目"已经属于另一个组织,比如"开源",这种情况下该怎么办?这里我们就可以使用与组成员共享项目这个功能了。
与"工程"组共享" Acme 项目": 与"工程"组共享" Acme 项目":
1. 对于" Acme 项目",请使用左侧导航菜单转到" **会员"** 1. 对于" Acme 项目",请点击**项目设置**,进入到**项目成员设置**
2. 点击"邀请组"按钮
[![share project with groups](img/0d1c10a8d14f11dd831b96878fc521e5.png)](img/share_project_with_groups.png)
2. 选择"与组共享"标签
3. 添加具有您选择的最大访问权限级别的"工程"组 3. 添加具有您选择的最大访问权限级别的"工程"组
4. 点击**共享**分享 4. 点击**邀请**按钮
5. 与"工程"共享"项目 Acme"后,该项目将出现在"工程"的组织中
[![share project with groups tab](img/0e2287fb4b32bf9dff45f3255ddd45fe.png)](img/share_project_with_groups_tab.png)
5. 与"工程"共享"项目 Acme"后,该项目将列在组仪表板上
[!['Project Acme' is listed as a shared project for 'Engineering'](img/000b14e609fee563642c55e238caca88.png)](img/other_group_sees_shared_project.png)
请注意,您只能与以下项目共享一个项目:
* 您具有明确定义的成员资格的组 请注意,您只能共享项目给符合以下条件的组织:
* 包含嵌套子组或项目的组,您对其具有明确定义的角色
管理员可以与系统中的任何组共享项目. * 您具有明确定义的成员资格的组织
* 包含嵌套子组或项目的组织,您在其组织中具有明确定义的角色
## Maximum access level[](#maximum-access-level "Permalink") ## 最大访问权限[](#maximum-access-level "Permalink")
在上面的示例中,"工程"成员的最大"开发人员"访问级别意味着"工程"中具有较高访问级别的用户("维护者"或"所有者")将仅对" Acme 项目"具有"开发者"访问权限'. 在上面的示例中,"工程"成员的最大" Developer "访问级别意味着"工程"中具有较高访问级别的用户(" Maintainer "或" Owner ")将仅对" Acme 项目"具有"开发者"访问权限'。
## Sharing public project with private group[](#sharing-public-project-with-private-group "Permalink") ## 与私有组织共享项目[](#sharing-public-project-with-private-group "Permalink")
与私有组共享公共项目时,项目的所有者和维护者将在`members`页面上看到该组的名称. 所有者还可以在问题或合并请求中提及他们时,可以看到他们无权访问的私人群组的成员. 与私有组共享公共项目时,项目的 Owner 和 Maintainer 将在`members`页面上看到该组的名称。 所有者还可以在 Issue 或合并请求中使用@功能时,还可以看到他们无权访问的私人群组的成员。
## Share project with group lock[](#share-project-with-group-lock "Permalink") ## 禁用与组织共享项目[](#share-project-with-group-lock "Permalink")
可以防止一个组中[的项目与另一个组共享一个项目](../members/share_project_with_groups.html) . 这样可以更严格地控​​制项目访问. 可以禁用与组织共享项目以防止一个组织中[的项目与另一个组共享一个项目](../members/share_project_with_groups.html) ,这样可以更严格地控​​制项目访问。
了解更多有关[使用组锁共享的信息](../../group/index.html#share-with-group-lock) . 了解更多有关[使用组锁共享的信息](../../group/index.html#share-with-group-lock)
\ No newline at end of file \ No newline at end of file
# Cherry-pick[](#cherry-pick "Permalink") # Cherry-pick[](#cherry-pick "Permalink")
GitLab 实现了 Git 的强大功能,通过在合并请求和提交详细信息中引入**Cherry-pick**按钮来[挑选任何提交](https://git-scm.com/docs/git-cherry-pick "Git Cherry-Pick 文档") . Cherry-pick 是 Git 中非常强大的一个功能,通过在合并请求和提交详细信息中引入**Cherry-pick**[挑选任何想要的提交](https://git-scm.com/docs/git-cherry-pick "Git Cherry-Pick 文档")
## Cherry-picking a merge request[](#cherry-picking-a-merge-request "Permalink") ## Cherry-pick 一个合并请求[](#cherry-picking-a-merge-request "Permalink")
合并请求合并后,将可以使用**Cherry-pick**按钮来选择该合并请求引入的更改. 合并请求合并后,将可以使用**Cherry-pick**按钮来选择该合并中需要引入的更改。
[![Cherry-pick Merge Request](img/fe7d77556848be98a93c7b6516b0e6f8.png)](img/cherry_pick_changes_mr.png) [![Cherry-pick Merge Request](/../../docs/img/cherry_pick_changes_mr.png)](img/cherry_pick_changes_mr.png)
单击该按钮后,将出现一个模态,显示一个[分支过滤器搜索框](../repository/branches/index.html#branch-filter-search-box) ,您可以在其中选择: 单击该按钮后,会出现一个弹窗,将显示一个分支过滤器搜索框,您可以在其中选择:
* 将更改直接选择到所选分支中. * 将更改直接选择到所选分支中
* 使用经过精心挑选的更改创建一个新的合并请求. * 使用经过 Cherry-pick 的更改创建一个新的合并请求
### Cherry-pick tracking[](#cherry-pick-tracking "Permalink") ### Cherry-pick 跟踪[](#cherry-pick-tracking "Permalink")
在 GitLab 12.9 中[引入](https://gitlab.com/groups/gitlab-org/-/epics/2675) . 当您选择一个合并提交时,系统会向相关的合并请求讨论中添加系统注释,使新提交与现有合并请求相关联。
当您选择一个合并提交时,GitLab 将向相关的合并请求线程输出系统注释,使新提交与现有合并请求交联. 每个部署的[关联合并请求列表](../../../api/deployments.html#list-of-merge-requests-associated-with-a-deployment)都将包括 Cherry-pick 的合并提交。
[![Cherry-pick tracking in Merge Request timeline](img/e20aec7ab33bbd61bae4825e6c9e35f1.png)](img/cherry_pick_mr_timeline_v12_9.png) ## Cherry-pick 一个提交[](#cherry-picking-a-commit "Permalink")
每个部署的[关联合并请求列表](../../../api/deployments.html#list-of-merge-requests-associated-with-a-deployment)将包括精心挑选的合并提交.
**注意:**我们仅跟踪从 GitLab(UI 和 API)执行的 cherry-pick. 计划在将来的发行版中支持[通过命令行跟踪精心挑选的提交](https://gitlab.com/gitlab-org/gitlab/-/issues/202215) .
## Cherry-picking a commit[](#cherry-picking-a-commit "Permalink")
您可以从提交详细信息页面中挑选一个提交: 您可以从提交详细信息页面中挑选一个提交:
[![Cherry-pick commit](img/b4e821b8b83e29e837f01f4620e557b7.png)](img/cherry_pick_changes_commit.png) [![Cherry-pick commit](/../../docs/img/cherry_pick_changes_commit.png)](img/cherry_pick_changes_commit.png)
与选择合并请求类似,您可以选择将更改直接选择到目标分支中,也可以选择创建新的合并请求以选择更改. 与选择合并请求类似,您可以选择将更改直接选择到目标分支中,也可以选择创建新的合并请求以选择更改
请注意,在进行樱桃挑选合并提交时,主线将始终是第一父级. 如果要使用其他主线,则需要从命令行执行. 请注意,在进行 Cherry-pick 合并提交时,主线将始终是第一父级, 如果要使用其他主线,则需要从命令行执行。
这是一个使用第二个父级作为主线来挑选合并提交的快速示例: 这是一个使用第二个父级作为主线来 Cherry-pick 合并提交的示例:
``` ```markdown
git cherry-pick -m 2 7a39eb0 git cherry-pick -m 2 7a39eb0
``` ```
\ No newline at end of file
# 创建合并请求[](#创建合并请求 "Permalink") # 创建合并请求[](#创建合并请求 "Permalink")
在创建合并请求之前,请通读"合并请求"的[简介,](getting_started.html)以熟悉概念,术语并了解如何使用它们. 在创建合并请求之前,请通读"合并请求"的[简介,](getting_started.html)以熟悉概念、术语,并了解如何使用它们。
每个合并请求都从创建一个分支开始. 您可以通过[命令行](#new-merge-request-from-your-local-environment) ,Git CLI 应用程序或[GitLab UI](#new-merge-request-from-a-new-branch-created-through-the-ui)在本地进行操作. 每个合并请求都从创建一个分支开始,您可以通过[命令行](#new-merge-request-from-your-local-environment) ,Git CLI 应用程序或[CODEChina WEB](#new-merge-request-from-a-new-branch-created-through-the-ui)完成分支的创建。
本文档介绍了创建合并请求的几种方法. 本文档介绍了创建合并请求的几种方法
启动新的合并请求时,无论使用哪种方法,都将转到" [**新合并请求"**页面,](#new-merge-request-page)以在其中添加有关合并请求的信息. 启动新的合并请求时,无论使用哪种方法,都将转到[**新合并请求**](#new-merge-request-page)页面,并在其中添加合并请求相关的信息。
如果将新分支推送到 GitLab,也不管使用哪种方法,都可以单击[**Create Merge Request**](#create-merge-request-button)按钮并从此处启动合并请求. 如果将新分支推送到 CODEChina,不论使用哪种方法,都可以单击[**创建合并请求**](#create-merge-request-button)按钮并从此处启动合并请求。
## New Merge Request page[](#new-merge-request-page "Permalink") ## 新建合并请求[](#new-merge-request-page "Permalink")
在" **新合并请求"**页面上,首先填写**合并请求**的标题和描述. 如果分支上已经有提交,则标题将用第一条提交消息的第一行预填充,描述将用提交消息中的任何其他行预填充. 在所有情况下,标题都是唯一的必填字段. 在" **新合并请求"**页面上,首先填写**合并请求**的标题和描述. 如果分支上已经有提交,则标题将用第一条提交消息的第一行预填充,描述将用提交消息中的任何其他行预填充. 在所有情况下,标题都是唯一的必填字段.
......
# 草稿[](#草稿 "Permalink") # Draft[](#draft "Permalink")
如果合并请求尚未准备好进行合并(可能是由于持续的开发或开放的线程),则可以通过将其标记为**Draft**来阻止在合并之前接受该合并请求. 这将禁用"合并"按钮,从而防止其被合并,并且在删除"草稿"标志之前它将保持禁用状态. 如果合并请求尚未准备好进行合并(可能是由于持续的开发或需要开放讨论),则可以将其标记为**Draft**来阻止在合并之前接受该合并请求,**Draft**合并请求的"合并"按钮将会被禁用,从而防止其被合并,并且在删除"**Draft: / WIP:**"标志之前它将一直保持禁用都状态。
[![Blocked Merge Button](img/284b72b1bfc8d5679fdaa384932b3b8c.png)](img/draft_blocked_merge_button_v13_2.png) [![Blocked Merge Button](/../../docs/img/draft_blocked_merge_button_v13_2.png)](img/draft_blocked_merge_button_v13_2.png)
## Adding the “Draft” flag to a merge request[](#adding-the-draft-flag-to-a-merge-request "Permalink") ## 给合并请求添加 Draft/WIP 标记[](#adding-the-draft-flag-to-a-merge-request "Permalink")
在 GitLab 13.2 中[引入](https://gitlab.com/gitlab-org/gitlab/-/issues/32692)的在进行中(WIP)合并请求已重命名为**Draft** . 在 GitLab 14.0 中将删除对使用**WIP 的**支持. 对在进行中(WIP)合并请求可以添加** Draft: **** WIP: ** 的标记。具体的添加方式如下:
There are several ways to flag a merge request as a Draft: *`[Draft]``Draft:``(Draft)`到合并请求标题的开头,单击标题框下的" **以草稿开始标题:** ",在编辑合并请求的描述时将具有相同的效果
* **不推荐使用**`[WIP]``WIP:`添加到合并请求标题的开头,**WIP**仍然有效,但我们推荐使用**Draft**
* 在合并请求的讨论中添加`/wip` [快速操作](../quick_actions.html#quick-actions-for-issues-merge-requests-and-epics)注释 ,可以重复进行并切换合并请求的状态。请注意,注释中的任何其他文本都将被丢弃
*`draft:``Draft:`添加到针对合并请求的源分支的提交消息的开头,这不会切换合并请求的状态,并且在另一次提交中再次执行将无效
*`[Draft]``Draft:``(Draft)`到合并请求标题的开头. 单击标题框下的" **以草稿开始标题:** ",在编辑合并请求的描述时将具有相同的效果. ## 移除合并请求中的 Draft/WIP 标记[](#removing-the-draft-flag-from-a-merge-request "Permalink")
* **不推荐使用**`[WIP]``WIP:`添加到合并请求标题的开头. **WIP**仍然有效,但不赞成使用**Draft** . 它将在下一个主要版本(GitLab 14.0)中删除.
* 在合并请求的注释中添加`/wip` [快速操作](../quick_actions.html#quick-actions-for-issues-merge-requests-and-epics) . 这是一个切换,可以重复进行以将状态改回. 请注意,注释中的任何其他文本将被丢弃.
*`draft:``Draft:`添加到针对合并请求的源分支的提交消息的开头. 这不是切换,并且在另一次提交中再次执行将无效.
## Removing the “Draft” flag from a merge request[](#removing-the-draft-flag-from-a-merge-request "Permalink") 与上述类似,当准备合并请求时,可以通过以下几种方式移除" `Draft`标记:
与上述类似,当准备合并请求时,可以通过以下几种方式删除" `Draft`标志: * 从合并请求标题的开头删除`[Draft]``Draft:``(Draft)` ,在编辑合并请求的描述时,在标题框下单击**从标题中删除草稿:前缀** ,将具有相同的效果
* 在合并请求的讨论中添加`/wip` [快速操作](../quick_actions.html#quick-actions-for-issues-merge-requests-and-epics) 注释,可以重复进行并切换合并请求的状态。请注意,注释中的任何其他文本都将被丢弃
* 点击靠近合并请求描述底部的*移除 WIP 状态**按钮,该按钮对至少具有 Developer 权限的用户才可见
* 从合并请求标题的开头删除`[Draft]``Draft:``(Draft)` . 在编辑合并请求的描述时,在标题框下单击" **从标题中删除草稿:"前缀** ,将具有相同的效果. ## 通过 WIP 过滤合并请求[](#includingexcluding-wip-merge-requests-when-searching "Permalink")
* 在合并请求的注释中添加`/wip` [快速操作](../quick_actions.html#quick-actions-for-issues-merge-requests-and-epics) . 这是一个切换,可以重复进行以将状态改回. 请注意,注释中的任何其他文本将被丢弃.
* 点击靠近合并请求描述底部的**解决草案状态**按钮,旁边的**合并**按钮(见[上面的图片](#draft-merge-requests) ). 必须对该项目至少具有开发人员级别的权限,该按钮才可见.
## Including/excluding WIP merge requests when searching[](#includingexcluding-wip-merge-requests-when-searching "Permalink") 查看/搜索合并请求列表时,可以通过在搜索框中添加" WIP"过滤器,然后选择"是"(包括)或"否"(排除)来选择包括或排除 WIP 合并请求。
\ No newline at end of file
查看/搜索合并请求列表时,可以通过在搜索框中添加" WIP"过滤器,然后选择"是"(包括)或"否"(排除)来选择包括或排除 WIP 合并请求.
[![Filter WIP MRs](img/fa591f90dc1e8840fe7fd692f24dcffe.png)](img/filter_wip_merge_requests.png)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册