# Git 协作规范实战演练 (Git Workshop) 欢迎来到 Git 实战演练项目!🎉 本项目旨在通过实际操作,帮助大家熟悉部门的 [Git 版本控制与协作规范]。请按照以下步骤,在本项目中完成你的代码提交任务。 ## 🎯 演练目标 1. 掌握 **Feature 分支** 的命名与创建。 2. 练习 **Java/代码命名规范**。 3. 掌握 **Commit Message** 的标准格式。 4. **重点**:养成 Push 前 `git pull --rebase` 的肌肉记忆。 5. 熟悉 **Pull Request (PR)** 流程。 --- ## 🚀 任务流程 请按顺序执行以下步骤: ### 1. 准备工作 首先,克隆仓库并切换到开发主干 `develop`。 ```bash git clone <仓库地址> cd git-workshop git checkout develop git pull origin develop ``` ### 2. 创建你的功能分支 根据规范,分支命名格式为:feat/-。 本次演练假设任务 ID 为 101,请用你的名字拼音作为描述。 示例:如果你的名字是夏小芮(Xia xiaorui) ```Bash # 格式:feat/training- git checkout -b feat/training-xxr ``` ### 3. 创建个人工作区与代码 为了避免演练冲突,请在 participants 目录下创建一个以你名字命名的文件夹。 创建目录:participants/xxr/ 创建文件:在该目录下创建一个 Java 类文件,例如 UserDetail.java。 📝 编码规范要求 (请严格遵守): 类名:大驼峰 (e.g., UserDetail) 方法名:小驼峰 (e.g., getUser) 缩进:4 个空格 (严禁使用 Tab) 括号:K&B 风格 (左大括号不换行) 代码示例: ```Java package participants.xxr; public class UserDetail { private String userName; public String getUser(int id) { if (id <= 0) { return "Unknown"; } return this.userName; } } ``` ### 4. 提交代码 (Commit) 将文件添加到暂存区并提交。请遵循 Conventional Commits 规范。 格式:`(): ` ```Bash git add . git commit -m "feat(training): add zhangsan user detail implementation" ``` ⚠️ 注意:Commit Message 必须全英文,Subject 使用祈使句,结尾不要加句号。 ### 5. 同步代码 (关键步骤!) 在你开发的过程中,develop 分支可能已经有了别人的提交。为了保持提交历史整洁(线性历史),在 Push 之前,必须 进行 Rebase。 ```Bash # 1. 先切换回 develop 拉取最新代码 (是一个好习惯,或者直接 fetch) git fetch origin develop # 2. 确保你在你的功能分支上 git checkout feat/training-zhangsan # 3. 执行变基 (Rebase) git rebase origin/develop ``` 如果出现冲突 (Conflict): 手动修改冲突文件。 ```Bash git add <冲突文件> git rebase --continue ``` 绝对禁止 在此处使用 git merge,这会产生无意义的 Merge Commit 节点。 ### 6. 推送与提交 PR 代码同步并测试无误后,推送到远程仓库。 ```Bash git push origin feat/training-xxr ``` 最后一步: 打开 Git 仓库网页 (GitLab/GitHub)。 创建一个 Pull Request (Merge Request)。 源分支:feat/training-xxr 目标分支:develop 在描述中引用关联 Issue(本次演练可忽略)。 邀请 Tech Lead 进行 Code Review。 # ✅ 自查清单 (Checklist) 在提交 PR 前,请自我检查: - [ ] 分支名是否小写?(e.g., feat/...) - [ ] 代码缩进是否为 4 空格?左大括号是否没换行? - [ ] Commit Message 是否符合格式?(e.g., feat(scope): ...) - [ ] 是否执行了 Rebase 操作? (历史记录是否是一条直线?) Happy Coding! 💻