forked from jk_yinzy/cicd-test
194 lines
5.3 KiB
Markdown
194 lines
5.3 KiB
Markdown
# 操作说明3
|
||
|
||
当然可以!以下是一份 **专为协作者(如你)量身定制的完整 Git + CI/CD 协作流程指南**,基于你的真实使用场景:
|
||
|
||
- 🧑💻 你是 **协作者**(非仓库所有者)
|
||
- 💻 使用 **JetBrains IDEA** 开发
|
||
- 📦 仓库托管在 **Gitea**
|
||
- ⚙️ CI/CD 由 **Drone** 驱动
|
||
- 🔄 工作流:**功能分支 → PR → 审核 → 合并到 `main`**
|
||
|
||
---
|
||
|
||
## 🎯 目标
|
||
|
||
让你从 **第一次参与项目** 到 **日常开发、提交 PR、同步代码** 全流程清晰、无歧义、零命令行。
|
||
|
||
---
|
||
|
||
## 🔄 完整协作流程(6 个清晰阶段)
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[0. 克隆项目] --> B[1. 同步最新 main]
|
||
B --> C[2. 创建功能分支]
|
||
C --> D[3. 日常开发与提交]
|
||
D --> E[4. 提交前同步 main]
|
||
E --> F[5. 推送并创建 PR]
|
||
F --> G[6. 等待审核 & 合并]
|
||
```
|
||
|
||
---
|
||
|
||
### ✅ 阶段 0:克隆项目(首次参与)
|
||
|
||
> 只需做一次
|
||
|
||
1. 打开 IDEA → **Get from VCS**
|
||
- URL: `https://gitea.hy-ec.cn/jk_yinzy/adfsadfsadf.git`
|
||
- Directory: 本地路径(如 `~/projects/my-project`)
|
||
2. 点击 **Clone**
|
||
3. 登录你的 Gitea 账号(需有 **读写权限**)
|
||
|
||
✅ 此时你拥有完整本地仓库,包含 `main` 分支。
|
||
|
||
---
|
||
|
||
### ✅ 阶段 1:同步最新 `main`(重要!)
|
||
|
||
> 确保你基于最新代码开始开发
|
||
|
||
1. 右下角点击分支名(应为 `main`)
|
||
2. 菜单栏:**VCS → Git → Fetch**
|
||
(拉取远程所有更新,包括 `origin/main`)
|
||
3. 确认本地 `main` 是最新的(可选:切换到 `main` → 查看提交历史)
|
||
|
||
> 💡 这一步防止你基于过时代码开发!
|
||
|
||
---
|
||
|
||
### ✅ 阶段 2:创建你的功能分支
|
||
|
||
1. 右下角点击当前分支(`main`)
|
||
2. 选择 **New Branch**
|
||
- 名称规范:`feat/xxx`、`fix/xxx`、`yourname/topic`
|
||
例如:`yinzy/user-profile`
|
||
3. IDEA 自动切换到新分支
|
||
|
||
✅ 此分支仅属于你,可自由提交。
|
||
|
||
---
|
||
|
||
### ✅ 阶段 3:日常开发与提交
|
||
|
||
1. 编写代码、修改文件
|
||
2. 底部 **Git → Commit**
|
||
- 勾选变更文件
|
||
- 输入语义化提交信息:
|
||
```
|
||
feat: add user profile page
|
||
```
|
||
3. 点击 **Commit and Push**
|
||
|
||
> ⚠️ 首次推送时:
|
||
> - IDEA 会弹窗 → 勾选 **Set upstream**
|
||
> - 远程分支自动创建(如 `origin/yinzy/user-profile`)
|
||
|
||
✅ 之后每次提交可直接 **Push**(无需再设 upstream)
|
||
|
||
---
|
||
|
||
### ✅ 阶段 4:提交 PR 前 —— 再次同步 `main`
|
||
|
||
> ⚠️ 关键步骤!避免 PR 出现冲突
|
||
|
||
即使你刚开发完,也可能有人已合并新代码到 `main`。
|
||
|
||
#### 操作步骤(全部在 IDEA):
|
||
|
||
1. **VCS → Git → Fetch**
|
||
(获取最新 `origin/main`)
|
||
2. **VCS → Git → Rebase...**
|
||
- Onto branch: `origin/main`
|
||
- 点击 **Rebase**
|
||
3. 如果出现冲突:
|
||
- IDEA 弹出 **Merge Conflicts** 窗口
|
||
- 双击文件,在三向编辑器中解决
|
||
- 点击 **Apply** → 继续
|
||
4. **VCS → Git → Push**
|
||
- 如果提示 “Push failed”,点击 **Force Push**
|
||
|
||
> ✅ 现在你的分支干净地基于最新 `main`
|
||
|
||
---
|
||
|
||
### ✅ 阶段 5:推送并创建 Pull Request(PR)
|
||
|
||
1. 确保代码已推送(右上角无未推送提交)
|
||
2. IDEA 可能弹出提示:
|
||
> “Your branch has been pushed. Create a pull request?”
|
||
3. 点击 **Create Pull Request**
|
||
- 或手动打开 Gitea 页面
|
||
4. 在 Gitea 中填写:
|
||
- **标题**:`feat: add user profile`
|
||
- **描述**:功能说明、如何测试
|
||
- **不要加 `WIP:`**(除非未完成)
|
||
5. 点击 **Create Pull Request**
|
||
|
||
✅ Drone 自动运行 CI(`drone/pr`)
|
||
|
||
---
|
||
|
||
### ✅ 阶段 6:等待审核 & 合并
|
||
|
||
1. 维护者(`jk_yinzy`)会:
|
||
- 查看 CI 结果(必须绿色 ✅)
|
||
- 审核代码
|
||
- 点击 **Approve**
|
||
- 点击 **「创建合并提交」**(Squash and merge)
|
||
2. 合并后,PR 自动关闭
|
||
3. (可选)维护者删除你的远程分支
|
||
|
||
> 🎉 你的代码正式进入 `main`!
|
||
|
||
---
|
||
|
||
## 🔁 日常开发循环(每天重复)
|
||
|
||
当你继续开发新功能时,只需重复:
|
||
|
||
```mermaid
|
||
graph LR
|
||
A[Fetch latest main] --> B[Create new branch]
|
||
B --> C[Develop + Commit]
|
||
C --> D[Rebase onto main]
|
||
D --> E[Push + Create PR]
|
||
```
|
||
|
||
> 💡 每次提 PR 前都执行 **阶段 4(rebase)**,这是专业协作的核心习惯!
|
||
|
||
---
|
||
|
||
## 🛠️ IDEA 快捷操作速查
|
||
|
||
| 操作 | 路径 |
|
||
|------|------|
|
||
| 拉取远程更新 | **VCS → Git → Fetch** |
|
||
| 创建分支 | 右下角 → New Branch |
|
||
| 变基到 main | **VCS → Git → Rebase... → origin/main** |
|
||
| 强制推送 | **Push → Force Push** |
|
||
| 查看提交历史 | **Git → Log** |
|
||
|
||
---
|
||
|
||
## 📌 重要提醒
|
||
|
||
| 注意事项 | 说明 |
|
||
|--------|------|
|
||
| ❌ 不要直接推送到 `main` | 分支保护会拒绝 |
|
||
| ✅ 每次 PR 前必须 rebase | 避免“此分支落后于 main” |
|
||
| ✅ 提交信息要清晰 | 便于审核和追溯 |
|
||
| ✅ 小步提交、频繁推送 | 降低冲突风险 |
|
||
|
||
---
|
||
|
||
## ✅ 最终效果
|
||
|
||
- 你作为协作者:**独立开发、安全提交、顺利合入**
|
||
- 维护者:**轻松审核、一键合并、历史干净**
|
||
- 项目:**CI 始终通过、`main` 永远可部署**
|
||
|
||
---
|
||
|
||
如果你希望,我可以将这份指南导出为 **PDF 手册** 或 **团队协作备忘单(Markdown / Word)**,方便你和队友随时查阅!是否需要?
|
||
## 添加git cicd |