You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用git cl checkout从Gerrit检出分支失败:无法找到Dart项目已提交Issue对应的分支

解决Gerrit git cl checkout 无法检出已提交Issue分支的问题

我之前在Dart项目的Gerrit协作中也碰到过一模一样的问题,新电脑上能创建Issue但就是没法用git cl checkout检出旧变更,大概率是本地仓库没同步Gerrit的变更分支信息,或者git cl的配置没到位。试试下面这些步骤:

步骤1:同步Gerrit的所有变更分支信息

首先执行fetch命令拉取Gerrit上的所有变更 refs,因为Gerrit的变更分支默认不在普通的refs/heads下,而是存在refs/changes路径里,本地仓库默认不会自动拉取这些:

git fetch origin '+refs/changes/*:refs/remotes/origin/changes/*'

这个命令会把Gerrit上所有变更的分支都同步到本地的origin/changes路径下。

步骤2:尝试重新用git cl checkout检出

完成fetch之后,再执行你原来的命令试试:

git cl checkout 212560

或者用完整的变更URL:

git cl checkout https://dart-review.googlesource.com/c/sdk/+/212560

步骤3:如果还是不行,手动检出变更分支

如果git cl还是没反应,可以直接通过Gerrit的refs路径手动检出。对于变更212560,它的refs路径格式是refs/changes/60/212560/[patchset编号](最后一位是补丁版本号,通常先试1):

git checkout origin/refs/changes/60/212560/1

如果需要创建本地分支关联这个变更,可以用:

git checkout -b issue-212560 origin/refs/changes/60/212560/1

步骤4:确认git cl的配置正确性

新电脑上可能需要重新配置git cl,确保它能正确识别Gerrit的远程仓库:

git cl config

检查输出里的review.url是不是https://dart-review.googlesource.com,remote是不是指向你的origin远程仓库。如果配置不对,手动设置:

git config review.dart-review.googlesource.com.url https://dart-review.googlesource.com
git config review.dart-review.googlesource.com.remote origin

为什么会出现这个问题?

新克隆的仓库默认只会拉取refs/heads下的分支,而Gerrit的所有变更都存储在refs/changes路径下,所以git cl工具无法在本地找到对应的分支信息,必须手动同步这些refs才能让git cl识别到变更。

内容的提问来源于stack exchange,提问作者Ahmed Ashour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 10:53:16