**Do one thing and do it well:**一个提交中只做一件完整的小事,一次把它做好
提交做小,方便评审,提交原子化,包含单个修改
一、提交节点修复
1、拆分提交
拆分当前提交:
回溯头指针,将当前提交的修改保留在工作区,从暂存区撤出
git reset HEAD~1
然后依次新增提交
git add -p
git commit
2、拆分历史提交
首先回溯当前工作区和暂存区至需要修改的提交
git rebase -i B^
### > 选择
edit B
pick C
然后使用拆分当前提交的方法,将历史提交拆分后,继续执行rebase,让提交C自动改到拆分后的提交之后。
git rebase --contine
2、修改提交
当发现提交代码含有缺陷的时候,我们需要着手修复缺陷,但修复后再次提交就会出现,修复xxx提交的相关信息,但这样不便于评审,也不便于使用git bisect定位问题,因此需要通过其他方法来完成
修改当前提交
借助git add在工作区修复缺陷
git add .
git add commit --amend
修改历史提交
同样在当前工作区修复历史提交中的缺陷,然后使用git add,git rebase完成修复和历史提交合并。
git add.
git commit --fixup A
git rebase -i --autosquash A^
二、提交说明
提交说明主要包含四个部分:
- 提交标题:
- 提交标题后紧跟一个空行:为了区分标题和主体
- 提交主题内容
- 签名区
1、提交标题
- 简明说明提交涉及的改动内容
- 尽量不超过50个字符:常把提交说明作为邮件标题,邮件标题有字数限制
- 一般建议使用英文:git format-path等指令转换补丁时,中文可能出错
- 建议增加前缀,区分改动范围
eg: upload:add – rerun option to ignore published ref
2、提交主体
- 单行超过72字符换行
- 详细说明提交改动内容、解决的问题、解决方案的合理性等
- 可以使用makedown语法提高可读性
3、签名区
- Repoted-by:问题报告者
- Reviewed-by:代码评审者
- Signed-off-by:为提交添加背书,通常由作者添加,git commit -s参数添加
- Helped-by:帮助者
4、修改提交说明
与修改历史提交缺陷思路相似,借助rebase完成修改合并
git commit --fixup=reword:A
git rebase -i -autosquash A^