你的 Git 提交是不是也一团糟 ?

大家好,我是楷鹏。

写一份干净的 Git Commit,不仅赏心悦目,也有诸多好处,比如

  1. 为项目或者仓库生成 change log
  2. 方便在其他一些 Git 工具使用,比如 CI/CD、代码协作和审计平台、发版工具

但现实是,大家对 Git Commit 基本上是为所欲为,导致一团糟:

而这是 AngularJS 仓库的 Git Commit,干净,简洁,统一

↪️ https://github.com/angular/angular/commits/main

AngularJS 对 Git Commit 做了规范,值得借鉴。

Commit 组成:

<header>
<空一行>
<body>
<空一行>
<footer>

🌰 举例:


对应如下:

其中

  • header 是必要的
  • body 也是必要的,除了类型为 docs 之外,body 的内容必须大于 20 个字符
  • footer 是可选的,比如放置引用的 issue

header 由三部分组成:

<类型>(<作用域>): <主题>
  │       │        │
  │       │        └─⫸ 简短总结,现在时态,不需要首字母大写,末尾不用加句号
  │       │
  │       └─⫸ Commit 作用域: animations|bazel|benchpress|common|compiler|compiler-cli|core|
  │                          elements|forms|http|language-service|localize|platform-browser|
  │                          platform-browser-dynamic|platform-server|router|service-worker|
  │                          upgrade|zone.js|packaging|changelog|docs-infra|migrations|
  │                          devtools
  │
  └─⫸ Commit 类型: build|ci|docs|feat|fix|perf|refactor|test

类型一共有 8 种:

类型描述
build影响构建系统或外部依赖的更改 (示例范围:gulp, broccoli, npm)
ci对 CI 配置文件和脚本的更改 (示例:CircleCi, SauceLabs, GitHub Workflow)
docs仅文档更改
feat新功能
fix错误修复
perf改善性能的代码更改
refactor既不修复错误也不添加功能的代码更改
test添加缺失测试或更正现有测试

作用域根据工程团队自己定义,可参考 AngularJS 定义的作用域列表:

↪️ https://github.com/angular/angular/blob/main/CONTRIBUTING.md#scope

主题要简单总结,如果团队使用英语,语法上需符合:

  • 祈使句,并且是现在时态,比如 “change”,而不是 “changed” 或者 “changes”
  • 首字母不需要大写
  • 结尾不需要逗号或者句号

🌰 举例

docs(server): add javadoc comments on methods
feat(core): add new command 'Upload' to UI
fix: update GET headers (#142)

Reference

https://medium.com/@menuka/writing-meaningful-git-commit-messages-a62756b65c81


One more thing:

{
  "公众号": "程序员楷鹏",
  "简介": "世界有 10 种人,一种是懂二进制的,另外一种是不懂的",
  "还有": "你肯定会关注的对吧彦祖?"
}
Git 中,如果你想只提交**部分修改内容**(而是整个文件的所有改动),可以使用以下方式来**提交指定内容**: --- ## ✅ 方法一:交互式添加修改(推荐) ```bash git add -p ``` ### 🔍 说明: - `-p` 是 `--patch` 的缩写。 - 会逐块(hunk)展示你修改的内容,你可以选择是否添加该块到暂存区。 - 每个修改块会显示差异,然后提示你选择操作。 ### 📌 操作选项: | 选项 | 含义 | |------|------| | `y` | 添加该块 | | `n` | 添加该块 | | `s` | 将当前块拆分为更小的块 | | `q` | 退出 | | `?` | 查看帮助 | ### ✅ 示例: ```bash git add -p git commit -m "提交部分修改" ``` --- ## ✅ 方法二:手动编辑指定 patch 提交(高级) 你可以手动创建一个 patch 文件,只包含你想提交的改动,然后应用并提交。 ### 示例步骤: ```bash # 1. 创建 patch(只包含你想提交的部分) git diff > my_patch.patch # 2. 手动编辑 my_patch.patch,只保留你想要提交的部分 # 3. 应用 patch 到暂存区 git apply --cached my_patch.patch # 4. 提交 git commit -m "提交指定 patch 内容" ``` --- ## ✅ 方法三:使用图形化工具(如 VS Code、Sourcetree) - 打开 VS Code,进入“源代码管理”视图。 - 在“更改”区域,点击文件展开,可以看到每个修改块。 - 点击 `+` 号只将你想提交的块移动到“已暂存更改”。 - 输入 commit message,提交即可。 --- ## ✅ 方法四:添加指定文件的部分内容 如果你只想提交某个文件的部分内容: ```bash git add -p <file> ``` 例如: ```bash git add -p u_packages/chm/src/chm_dev_manager.c ``` --- ## ✅ 方法五:使用 `git gui`(图形界面) ```bash git gui ``` - 在界面中可以选择文件或代码块进行提交。 --- ## ✅ 总结 | 方法 | 适用场景 | |------|----------| | `git add -p` | 快速提交部分修改内容 | | 手动 patch | 精确控制提交内容 | | 图形化工具 | 可视化操作,适合新手 | | `git gui` | 简单易用的图形界面 | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值