gerrit 中refs/for 和 fefs/head的区别

本文详细介绍了在使用Gerrit进行代码审查时,如何区分使用refs/for/[branch]和refs/heads/[branch]的区别。前者需要经过严格的代码审查才能提交,而后者则可以直接提交。文章通过具体的Git命令示例,解释了当需要进行代码审查时,如何正确地推送代码到远程仓库。

refs/for/[brach] 需要经过code review之后才可以提交,而refs/heads/[beanch]不需要code review。

举例

  • 如果需要code review,直接执行push:

 

git push origin mybrach

就会报错“! [remote rejected] master -> master (prohibited by Gerrit)”必须用以下语句:

 

git push origin HEAD:resf/for/mybranch



作者:小庄bb
链接:https://www.jianshu.com/p/1c52bb4c7983
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

### HEAD:refs/for 的含义及与 remote 的关系 #### 1. HEAD 的定义 `HEAD` 是一个特殊的指针,指向当前正在工作的本地分支。它是一个动态引用,表示用户当前所在的分支或提交点。例如,如果用户在 `main` 分支上工作,`HEAD` 就会指向 `main` 分支的最新提交[^1]。 #### 2. refs/for 的意义 `refs/for` 是一种特定的引用路径,通常用于代码评审系统(如 Gerrit)。它的作用是将代码推送到远程仓库后进入代码评审流程,而不是直接合并到目标分支。例如: ```bash git push origin HEAD:refs/for/master ``` 此命令将当前分支的更改推送到远程仓库的 `master` 分支进行代码评审。`refs/for/master` 表示推送的目标是一个需要经过评审的变更请求,而不是直接更新 `master` 分支的内容[^2]。 #### 3. HEAD:refs/for 的完整含义 `HEAD:refs/for/<branch>` 的结构表示将当前分支的代码推送到远程仓库的指定分支,并标记为需要代码评审的状态。其中: - `HEAD` 指向本地当前分支。 - `refs/for/<branch>` 是远程仓库中的引用路径,表明推送的代码需要经过评审后才能合并到 `<branch>` 分支。 #### 4. 与 remote 的关系 `remote` 是远程仓库的名称,用于标识代码推送的目标位置。在命令 `git push <remote> HEAD:refs/for/<branch>` 中: - `<remote>` 是远程仓库的名称(如 `origin`)。 - `HEAD` 是本地分支的指针。 - `refs/for/<branch>` 是远程仓库中用于代码评审的引用路径。 完整的命令逻辑如下: - `git push`:表示将代码推送到远程仓库。 - `<remote>`:指定远程仓库的名称。 - `HEAD`:表示当前本地分支。 - `refs/for/<branch>`:表示推送的目标是远程仓库中的代码评审队列。 #### 示例代码块 以下是一个完整的示例,展示如何使用 `HEAD:refs/for` 推送代码到远程仓库进行评审: ```bash # 假设远程仓库名称为 origin,目标分支为 develop git push origin HEAD:refs/for/develop ``` 此命令将当前分支的代码推送到 `origin` 远程仓库的 `develop` 分支进行代码评审。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值