推送规则设置

为了规范开发者提交格式,平台提供推送规则检查服务,支持自定义检查规则,对未推送的提交进行检查。本文主要介绍了如何创建推送规则,以及触发规则后的展示。

创建推送规则

  1. 作为库管理员,点击左下角设置进入代码库设置页面,找到推送规则设置

    高的 (44)

  2. 单击新建推送规则,设置规则参数:

    高的 (45)

    重要

    仅支持针对全库所有分支启用检查规则。

  • 提交注释:即 Commit message,规则请使用正则表达式书写,提交注释需符合正则表达式才允许推送,为空表示允许所有提交注释。如何书写正则表达式

  • 提交邮箱:即 git config 设置的邮箱,规则请使用正则表达式书写,提交作者邮箱需符合正则表达式匹配才允许推送,为空表示允许所有邮箱。如何书写正则表达式

  • 禁止强制推送(Force Push):强制推送即强制用本地代码覆盖远程仓库的代码,由于会直接覆盖远程的提交,特别是在版本冲突的情况下,可能造成代码和提交记录丢失,需谨慎使用。如希望排查是否因为成员强制推送导致提交记录丢失,可通过代码库动态筛查强制推送事件以追溯操作人。1

    为了避免由于强制推送导致的代码丢失问题,可以通过开启禁止强制推送对操作进行限制。

    当开启禁止强制推送,推送的本地代码和远端存在分叉时,无法通过 git push -f 的方式强行推送本地代码,避免服务端代码被覆盖。

    说明

    当已开启禁止强制推送,但是本地代码和远端服务器代码无分叉时,此时即使使用 git push -f 命令进行推送,效果也和git push一致,可以推送成功。

  • 代码属主检查:在开始使用 Git 进行版本管理之前,需要先进行用户配置。

    git config --global user.name "您的名字"
    git config --global user.email "您的邮箱"

提交记录的作者(Author)与提交者(Committer)的区别

  • Git 允许重写历史和代表他人提交代码:在查看历史提交记录时,通常显示的是作者(Author)。作者与代码贡献者直接相关,是代码统计的归属依据。为了确保代码贡献统计的准确性,需要规范提交代码的属主与服务端当前登录用户的对应关系。

  • 通常情况下,提交者Committer并不对用户暴露:只有指定git log --format(例如format=fuller)时才会展示。提交者代表着这个提交记录Commit最终提交的人(提交时git config user.namegit config user.email)。

  • 在使用 git commit 命令时,可以通过 `author` 参数指定提交记录的贡献者:在开源社区中,即使未直接使用某人的代码,但使用了其创意,也会将其列为作者以示尊重。通常情况下,首次生成的Commit中,Author和Committer是同一人。然而,当其他人通过 git cherry-pickgit rebasegit commit --amendgit filter branch git format patch等命令重写 Commit时,新的Commit的Author保持不变,而Committer则变为执行该操作的用户。简而言之,Author被视为原始贡献者,而Committer是生成Commit的人。

  • Codeup支持针对Author和Committer对当前登录用户已验证的主邮箱做检查:若邮箱信息无法匹配,可以警告或限制其推送,以保证代码贡献属主的准确性,避免由于无法匹配用户导致的贡献量计算失真。

    高的 (46)

继承企业级规则

继承自企业的规则不可编辑和删除,仅支持查看,如需修改请联系企业管理员,请参见企业级代码库管理设置

高的 (47)

推送时检查

假设规则设置如下:

高的 (49)

页面操作

当提交时注释不符合已设置的规则时,提交将被拒绝:

高的 (48)

当提交邮箱不符合规则时,提交也会被拒绝:

高的 (50)

合并请求时同理。

命令行操作

当提交注释不符合规则时,会出现①处报错:

推送规则设置8

当提交邮箱不符合规则时,会出现②处报错:

推送规则设置9

当代码属主检查失败,出现③处报错:

推送规则设置10

修改已提交的历史注释

请参见:如何修改提交历史信息 ?