first commit
This commit is contained in:
257
从码云推送到Gerrit指南.md
Normal file
257
从码云推送到Gerrit指南.md
Normal file
@@ -0,0 +1,257 @@
|
||||
# 从码云推送到 Gerrit 操作指南
|
||||
|
||||
## 📋 前提条件
|
||||
|
||||
- ✅ 已从码云(Gitee)拉取最新代码
|
||||
- ✅ 代码仓库在本地已存在
|
||||
- ✅ Gerrit 服务器地址:`101.43.95.130:8080`
|
||||
- ✅ SSH 端口:`29418`
|
||||
- ✅ 用户名:`renjianbo`
|
||||
|
||||
---
|
||||
|
||||
## 🚀 操作步骤
|
||||
|
||||
### 步骤 1:进入代码仓库目录
|
||||
|
||||
```bash
|
||||
# 根据您的实际路径,进入代码目录
|
||||
cd /d/zhini/zhini_im
|
||||
# 或者
|
||||
cd /path/to/your/project
|
||||
```
|
||||
|
||||
### 步骤 2:检查当前 Git 状态
|
||||
|
||||
```bash
|
||||
# 查看当前分支和状态
|
||||
git status
|
||||
|
||||
# 查看远程仓库配置
|
||||
git remote -v
|
||||
```
|
||||
|
||||
### 步骤 3:添加 Gerrit 远程仓库
|
||||
|
||||
**如果还没有配置 Gerrit 远程仓库**:
|
||||
|
||||
```bash
|
||||
# 方式一:添加为新的远程仓库(推荐,保留码云远程)
|
||||
git remote add gerrit ssh://renjianbo@101.43.95.130:29418/项目名称
|
||||
|
||||
# 方式二:替换 origin 为 Gerrit(会替换掉码云的远程)
|
||||
# git remote set-url origin ssh://renjianbo@101.43.95.130:29418/项目名称
|
||||
```
|
||||
|
||||
**注意**:请将 `项目名称` 替换为 Gerrit 中的实际项目名称。
|
||||
|
||||
**如果使用 HTTP(不推荐,但可以作为备选)**:
|
||||
|
||||
```bash
|
||||
git remote add gerrit http://renjianbo@101.43.95.130:8080/项目名称
|
||||
```
|
||||
|
||||
### 步骤 4:安装 commit-msg Hook(重要!)
|
||||
|
||||
Gerrit 需要 Change-Id,必须安装 hook:
|
||||
|
||||
```bash
|
||||
# 下载 commit-msg hook
|
||||
mkdir -p .git/hooks
|
||||
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
|
||||
chmod +x .git/hooks/commit-msg
|
||||
```
|
||||
|
||||
### 步骤 5:检查是否有未提交的更改
|
||||
|
||||
```bash
|
||||
# 查看工作区状态
|
||||
git status
|
||||
|
||||
# 如果有未提交的更改,需要先提交
|
||||
git add .
|
||||
git commit -m "从码云同步代码"
|
||||
```
|
||||
|
||||
### 步骤 6:推送到 Gerrit
|
||||
|
||||
**推送到评审队列(推荐)**:
|
||||
|
||||
```bash
|
||||
# 推送到 master 分支的评审队列
|
||||
git push gerrit HEAD:refs/for/master
|
||||
|
||||
# 如果替换了 origin,使用:
|
||||
# git push origin HEAD:refs/for/master
|
||||
```
|
||||
|
||||
**推送到其他分支**:
|
||||
|
||||
```bash
|
||||
# 推送到 develop 分支的评审队列
|
||||
git push gerrit HEAD:refs/for/develop
|
||||
|
||||
# 推送到 feature 分支的评审队列
|
||||
git push gerrit HEAD:refs/for/feature/xxx
|
||||
```
|
||||
|
||||
### 步骤 7:查看推送结果
|
||||
|
||||
推送成功后,会显示类似以下信息:
|
||||
|
||||
```
|
||||
remote: Resolving deltas: 100% (X/X)
|
||||
remote: Processing changes: refs: 1, new: 1
|
||||
remote:
|
||||
remote: SUCCESS
|
||||
remote:
|
||||
remote: http://101.43.95.130:8080/c/项目名称/+/1 [NEW]
|
||||
remote:
|
||||
To ssh://renjianbo@101.43.95.130:29418/项目名称
|
||||
* [new branch] HEAD -> refs/for/master
|
||||
```
|
||||
|
||||
复制返回的 URL(如:`http://101.43.95.130:8080/c/项目名称/+/1`)在浏览器中打开查看变更。
|
||||
|
||||
---
|
||||
|
||||
## 🔧 常见问题处理
|
||||
|
||||
### 问题 1:找不到项目
|
||||
|
||||
**错误信息**:
|
||||
```
|
||||
fatal: Could not read from remote repository.
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 确认项目名称是否正确
|
||||
2. 在 Gerrit Web 界面查看项目列表:`http://101.43.95.130:8080/#/admin/projects/`
|
||||
3. 如果项目不存在,需要先在 Gerrit 中创建项目
|
||||
|
||||
### 问题 2:SSH 连接失败
|
||||
|
||||
**错误信息**:
|
||||
```
|
||||
ssh: connect to host 101.43.95.130 port 29418: Connection timed out
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 检查 SSH 公钥是否已添加到 Gerrit:`http://101.43.95.130:8080/#/settings/ssh-keys`
|
||||
2. 测试 SSH 连接:
|
||||
```bash
|
||||
ssh -p 29418 renjianbo@101.43.95.130 gerrit version
|
||||
```
|
||||
3. 如果 SSH 无法使用,可以临时使用 HTTP
|
||||
|
||||
### 问题 3:缺少 Change-Id
|
||||
|
||||
**错误信息**:
|
||||
```
|
||||
remote: ERROR: missing Change-Id in commit message
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 确保已安装 commit-msg hook(见步骤 4)
|
||||
2. 如果已安装但仍有问题,重新安装:
|
||||
```bash
|
||||
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
|
||||
chmod +x .git/hooks/commit-msg
|
||||
```
|
||||
3. 对于已提交的 commit,使用 `git commit --amend` 重新提交
|
||||
|
||||
### 问题 4:权限不足
|
||||
|
||||
**错误信息**:
|
||||
```
|
||||
remote: Permission denied
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 确认您在 Gerrit 中已注册账户
|
||||
2. 确认您有该项目的推送权限
|
||||
3. 联系管理员添加权限
|
||||
|
||||
---
|
||||
|
||||
## 📝 完整示例
|
||||
|
||||
假设您的项目名称是 `zhini_im`,完整操作如下:
|
||||
|
||||
```bash
|
||||
# 1. 进入项目目录
|
||||
cd /d/zhini/zhini_im
|
||||
|
||||
# 2. 检查状态
|
||||
git status
|
||||
git remote -v
|
||||
|
||||
# 3. 添加 Gerrit 远程仓库
|
||||
git remote add gerrit ssh://renjianbo@101.43.95.130:29418/zhini_im
|
||||
|
||||
# 4. 安装 commit-msg hook
|
||||
mkdir -p .git/hooks
|
||||
curl -o .git/hooks/commit-msg http://101.43.95.130:8080/tools/hooks/commit-msg
|
||||
chmod +x .git/hooks/commit-msg
|
||||
|
||||
# 5. 如果有未提交的更改,先提交
|
||||
git add .
|
||||
git commit -m "从码云同步代码到 Gerrit"
|
||||
|
||||
# 6. 推送到 Gerrit
|
||||
git push gerrit HEAD:refs/for/master
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 快速参考
|
||||
|
||||
### 常用命令
|
||||
|
||||
```bash
|
||||
# 查看远程仓库
|
||||
git remote -v
|
||||
|
||||
# 添加 Gerrit 远程仓库
|
||||
git remote add gerrit ssh://renjianbo@101.43.95.130:29418/项目名称
|
||||
|
||||
# 推送到评审队列
|
||||
git push gerrit HEAD:refs/for/master
|
||||
|
||||
# 查看变更列表
|
||||
# 浏览器访问:http://101.43.95.130:8080/#/q/status:open
|
||||
```
|
||||
|
||||
### 查看项目列表
|
||||
|
||||
```bash
|
||||
# 通过 SSH
|
||||
ssh -p 29418 renjianbo@101.43.95.130 gerrit ls-projects
|
||||
|
||||
# 通过 Web 界面
|
||||
# 访问:http://101.43.95.130:8080/#/admin/projects/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 检查清单
|
||||
|
||||
在推送前,请确认:
|
||||
|
||||
- [ ] 已进入正确的代码仓库目录
|
||||
- [ ] 已添加 Gerrit 远程仓库
|
||||
- [ ] 已安装 commit-msg hook
|
||||
- [ ] 已提交所有更改(或确认没有未提交的更改)
|
||||
- [ ] 知道目标分支名称(master/develop 等)
|
||||
- [ ] SSH 公钥已添加到 Gerrit(如果使用 SSH)
|
||||
- [ ] 项目已在 Gerrit 中创建
|
||||
|
||||
---
|
||||
|
||||
## 📞 需要帮助?
|
||||
|
||||
- 📖 查看其他文档:`Gerrit快速使用指南.md`
|
||||
- 🌐 访问 Gerrit:`http://101.43.95.130:8080`
|
||||
- 📝 查看变更:`http://101.43.95.130:8080/#/q/status:open`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user