做了三年程序员,希望我的同事比我懂这些
做了三年程序员,希望我的同事比我懂这些
之前用Git,完全是”粗放式操作”,只把它当作简单的代码快照工具,每次提交全凭感觉,遇到回滚、多人协作合并代码的问题就手忙脚乱,只能临时搜教程凑活用。最近抽时间系统梳理了Git的核心用法,才发现里面藏着不少提升效率的细节。今天把这些实用技巧整理出来,一方面给自己留个备忘录,免得日后再”临时抱佛脚”;另一方面也分享给和我有过类似困惑的小伙伴
一、代码回滚
1 | git reset --hard <commit_SHA-1> |
这里要提醒一句,git reset --hard 会彻底丢弃当前工作区的修改,执行前一定要确认好目标提交的SHA-1值(可以通过git log查看)。如果是多人协作的公共分支,谨慎使用--force强制推送,避免覆盖他人的提交记录。
二、多人协作合并代码到主分支(Rebase)
变基(Rebase),和merge相比,避免分支提交历史变得杂乱无章,让提交历史保持整洁线性。
Rebase的核心逻辑是:将当前分支的提交”复制”到目标分支的最新提交之后,相当于让当前分支站在目标分支的”肩膀上”继续开发。需要注意的是,Rebase会改变提交的哈希值,因此不建议在多人协作的公共分支上使用。
步骤:
- 确保当前工作目录干净(没有未提交的修改,可通过
git status查看); - 切换到待合并的test分支,并拉取远程最新代码,保证本地分支是最新状态:
1
2git checkout test
git pull origin test - 将test分支的提交变基到master分支的最新状态: 若过程中出现代码冲突,先手动解决冲突,然后执行
1
git rebase master
git add <冲突文件>,再用git rebase --continue继续变基,重复该步骤直到变基完成;若想放弃变基,执行git rebase --abort即可。 - 切换回master分支:
1
git checkout master
- 执行快进合并(由于test分支已基于master最新状态变基,master分支可直接快进合并,不会产生新的合并提交):
1
git merge test
- (可选)将合并后的代码推送到远程仓库:
1
git push origin master
## 三、规范提交消息
1. 统一提交格式
一个完整的提交消息分为三个部分:标题、正文、页脚,格式如下:
1 | <type>(<scope>): <short summary> |
示例
1 | feat(user): 添加用户注册功能 |
2. 常用类型(type)
| 类型 | 说明 |
|---|---|
| feat | 新功能(feature) |
| fix | 修复 Bug |
| docs | 文档更新(documentation) |
| style | 格式调整(不影响代码运行,例如缩进、空格、分号) |
| refactor | 代码重构(不新增功能、不修复 Bug) |
| perf | 性能优化 |
| test | 测试代码相关变更 |
| chore | 构建流程、工具或依赖更新(不影响源代码) |
| ci | CI/CD 配置或脚本变更 |
| revert | 回滚到某个提交 |
3. 写作规则
- 标题(第一行)
- 最多 50 字符
- 不加句号
- 用动词原形(add、fix、update、remove)
- 清晰概括核心修改
- 正文(可选)
- 每行 ≤ 72 字符
- 说明做了什么、为什么做
- 页脚(可选)
- 关联 Issue:
Closes #123/Fixes #45
- 关联 Issue:
4. 常见提交示例
1 | feat(auth): 新增 JWT 登录认证 |
5. 小贴士
一个提交只做一件事
先
git add相关文件,再写与之匹配的提交信息如果不确定类型,用
chore兜底团队可以用 Git Hook(如
commitlint)来强制检查格式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rainea!
评论
ValineGiscus
