一个开发工程师每天怎么用 Git + Gerrit 协作开发代码。

一个开发工程师每天怎么用 Git + Gerrit 协作开发代码。 Git Gerrit 从零到开发工程师学习笔记1. 为什么开发工程师必须学习 GitGit 是现代软件开发中最重要的基础工具之一。它的作用不是简单地“保存代码”而是帮助开发者管理代码的每一次变化。如果没有 Git项目很容易变成这样项目_最终版 项目_最终版2 项目_最终版_真的最终版 项目_最终版_老板修改版Git 可以解决这些问题我改了哪些代码谁改了这些代码什么时候改的为什么改改坏了能不能回退多个人同时开发怎么合并上线前怎么审查代码所以Git 是成为开发工程师必须掌握的基础能力。2. Git 的四个核心区域Git 最重要的理解模型是工作区 - 暂存区 - 本地仓库 - 远程仓库对应命令是修改文件 - git add - git commit - git push2.1 工作区工作区就是你电脑上正在编辑的项目文件。例如Program.cs MainWindow.xaml LoginService.cs你修改代码后这些修改首先只存在于工作区。查看当前工作区状态git status2.2 暂存区暂存区可以理解为准备放进下一次提交的修改清单添加某个文件git add Program.cs添加全部修改git add .注意git add不是上传代码也不是最终提交代码它只是把修改加入“待提交清单”。2.3 本地仓库本地仓库是你电脑里的 Git 历史记录。提交代码git commit -m 实现用户登录功能一次 commit 就是一次代码快照。2.4 远程仓库远程仓库通常在服务器上例如GitHubGitLabGiteeGerrit 管理的 Git 仓库普通推送git pushGerrit 常用推送git push origin HEAD:refs/for/master3. Git 常用命令3.1 查看状态git status它可以告诉你当前在哪个分支哪些文件被修改了哪些文件还没有暂存哪些文件已经准备提交这是开发中最常用的命令之一。3.2 查看修改内容查看未暂存的修改git diff查看已经暂存的修改git diff --cached提交代码前建议一定先看 diff。3.3 添加修改添加指定文件git add 文件名示例git add LoginService.cs添加全部修改git add .3.4 提交代码git commit -m 修复登录失败问题不推荐的提交信息git commit -m 修改 git commit -m update git commit -m fix推荐写法git commit -m 修复用户名为空时登录崩溃的问题好的 commit message 应该说明做了什么为什么做修复了什么问题3.5 查看提交历史git log简洁查看git log --oneline3.6 拉取远程代码git pull作用把远程仓库的最新代码拉到本地3.7 推送代码普通 Git 平台git push origin 分支名Gerrit 平台git push origin HEAD:refs/for/master4. Git 分支分支可以理解为从主线代码复制出来的一条独立开发线常见主分支master main develop创建并切换到新分支git switch -c feature/login老版本 Git 也可以使用git checkout -b feature/login常见分支命名master/main 稳定主分支 develop 开发主分支 feature/xxx 新功能分支 bugfix/xxx 修复问题分支 release/xxx 发布分支 hotfix/xxx 紧急修复分支作为开发工程师不建议直接在master或main上开发新功能。推荐流程git switch -c feature/my-task然后在自己的功能分支上开发。5. Gerrit 是什么Gerrit 是一个代码评审系统。它的核心作用是让代码在合入主分支前必须经过 ReviewGitHub/GitLab 常见流程push 分支 - 创建 Pull Request / Merge Request - 审查 - 合并Gerrit 常见流程commit - push 到 refs/for/目标分支 - Gerrit 生成 Change - 审查 - Submit 合入Gerrit 常用于企业内部项目Android 项目嵌入式项目大型团队协作对代码质量要求严格的项目6. Gerrit 核心概念6.1 ChangeChange 是 Gerrit 中的一次待评审代码变更。你执行git push origin HEAD:refs/for/master之后Gerrit 会生成一个 Change 页面。6.2 Patch SetPatch Set 是同一个 Change 的不同修改版本。例如Change 1001 Patch Set 1第一次提交 Patch Set 2根据评审意见修改 Patch Set 3继续修复别人 Review 后让你修改代码你再次提交后一般会生成新的 Patch Set。6.3 Code Review 分数常见分数2 代码评审通过 1 看起来不错但还不能最终通过 0 没有意见 -1 有问题需要修改 -2 严重问题不能合入6.4 VerifiedVerified 通常由 CI 系统给分。1 编译或测试通过 -1 编译或测试失败6.5 Submit当 Code Review 和 Verified 都满足条件后代码可以 Submit。Submit 的意思是把代码正式合入目标分支7. Gerrit 标准提交流程完整流程git clone 仓库地址 cd 项目目录 git switch -c feature/login # 修改代码 git status git diff git add . git commit -m 实现用户登录功能 git push origin HEAD:refs/for/master如果目标分支是developgit push origin HEAD:refs/for/develop这条命令的含义是把当前分支最新提交推送到 Gerrit 申请合入 master 或 develop 分支。8. Gerrit 的 Change-IdGerrit 通常要求 commit message 中包含Change-Id: Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx示例实现用户登录功能 Change-Id: Iabc1234567890abcdef1234567890abcdef1234Change-Id 的作用是让 Gerrit 判断这次提交属于哪个 Change如果你修改后再次提交Gerrit 会根据 Change-Id 判断这是同一个 Change 的新 Patch Set而不是创建一个新的 Change。通常项目会配置commit-msghook 自动生成 Change-Id。9. 修改 Gerrit 评审意见的正确方式当别人 Review 后要求你修改代码时常见流程是# 修改代码 git add . git commit --amend git push origin HEAD:refs/for/mastergit commit --amend的意思是修改上一次提交这样 Gerrit 会生成新的 Patch Set而不是新的 Change。10. 新手常见错误10.1 不知道自己在哪个分支解决git branch git status10.2 直接在 master/main 上开发建议先创建功能分支git switch -c feature/my-task10.3 commit message 写得太随意不推荐update fix 修改推荐修复登录失败时未提示错误信息的问题10.4 没有看 diff 就提交提交前建议执行git diff git diff --cached10.5 Gerrit 上生成多个无关 Change常见原因没有使用git commit --amendChange-Id 发生变化每次修改都重新创建了新的 commit正确做法git commit --amend git push origin HEAD:refs/for/master11. 从零到开发工程师的 Git 学习路线第一阶段Git 基础目标能管理自己的代码。需要掌握git init git clone git status git add git commit git log git diff git branch git switch git pull git push第二阶段团队协作目标能和别人一起开发。需要掌握分支管理 解决冲突 合并代码 rebase cherry-pick stash reset revert第三阶段Gerrit 工作流目标能完成公司代码评审流程。需要掌握refs/for Change Patch Set Change-Id Code Review Verified Submit commit --amend第四阶段工程习惯目标像真正开发工程师一样工作。需要养成提交前看 diff 写清楚 commit message 小步提交 一个 commit 只做一件事 不要提交临时代码 不要提交密码、密钥、配置私密信息 先拉最新代码再开发 遇到冲突会解决 看得懂 Review 意见第五阶段开发能力目标能独立完成真实项目。建议学习C# 基础 WinForms / WPF 数据库 SQLite / SQL Server 文件读写 网络请求 异常处理 日志系统 打包发布 调试能力 代码结构设计12. 今天应该掌握的最小闭环今天先重点掌握这个流程git status git add . git commit -m 描述本次修改 git log --oneline git push origin HEAD:refs/for/master对应真实开发流程查看改了什么 选择要提交的代码 生成本地提交 确认提交历史 推送到 Gerrit 评审只要真正理解这个闭环就已经进入开发工程师的基本工作流了。13. 推荐练习练习 1创建本地仓库mkdir git-demo cd git-demo git init练习 2创建文件并提交echo hello git readme.txt git status git add readme.txt git commit -m 添加 readme 文件练习 3查看历史git log --oneline练习 4修改文件并查看差异echo second line readme.txt git diff练习 5再次提交git add . git commit -m 更新 readme 内容14. 学习目标总结学完 Git Gerrit 后你应该能做到看懂项目当前 Git 状态正确创建分支修改代码后提交 commit看懂提交历史看懂代码差异推送代码到 Gerrit根据 Review 意见修改代码使用 amend 更新 Patch Set理解 Change、Patch Set、Change-Id避免常见 Git 新手错误这就是开发工程师进入团队协作的基础能力。