Gerrit相对Git提供了一个特有的命名空间“refs/for/”用来定义我们的提交上传到哪个branch
Gerrit相对Git提供了一个特有的命名空间“refs/for/”用来定义我们的提交上传到哪个branch
refs/for/mybranch 需要经过code review
refs/heads/mybranch 不需要code review
一、refs/for/*:
refs/for/*: 是 Gerrit Code Review 系统使用的命名空间,用于在提交代码时进行代码审查,会触发 Gerrit 的评审流程。
格式是 refs/for/<branch-name>。
权限控制:通常需要 Push
权限,但不需要直接提交到分支的权限。
使用举例:git push origin HEAD:refs/for/mybranch
二、refs/heads/*:
refs/heads/*: 这是 Git 中默认的分支命名空间,用于存储分支引用。
格式是 refs/heads/<branch-name>。
权限控制:
- 推送到此引用会 立即更新分支,不经过 Gerrit 评审流程。
- 直接提交代码到分支(绕过评审)。
举例:git push origin HEAD:refs/heads/mybranch
refs/for和refs/heads
核心区别总结
维度 | refs/for/mybranch | refs/heads/mybranch |
---|---|---|
是否触发评审 | ✅ 是(生成 Change-Id) | ❌ 否(直接合并) |
权限要求 | 需 Push 权限 | 需 Push + Submit 权限 |
适用场景 | 常规开发、需团队审核的变更 | 紧急修复、管理员操作 |
历史记录 | 保留所有补丁集(Patch Sets) | 直接提交,无评审记录 |
Gerrit 界面可见性 | 出现在 "Open Changes" 列表中 | 直接更新分支,不显示为待审变更 |
# 常用
git push origin HEAD:refs/for/master
# push一个Commit到Gerrit:
git push origin HEAD:refs/for/test_branch_1.0
# push一个commit到Git仓库:
git push origin HEAD:test_branch_1.0