Commit message和code review那些事

本文探讨了Git提交信息的规范,包括不同类型的提交如feat、fix等,并介绍了commit message的组成部分:Header、Body和Footer。此外,还列举了代码审查中常见的英文缩写及其含义,帮助开发者提高代码提交的质量和效率。

commit message

小编在每次写完程序提交代码的时候,都会通过git上传,git commit -a 'message' 但是message到底写什么,很是伤脑;

后来整理出了一些commint message 作用共同学们参考:

  1. 提供更多的历史信息记录,方便快速浏览与查询
  2. 配合管道查询过滤查看某些commit内容和历史记录
  3. 能直接从commit生成Change log

网上也有很多规范格式,这里小编列出一些关键词,commit 分Header,Body ,Footer

Header:可以理解为title,紧要说明本次提交内容与信息,提交内容可以分为一下几大类

- feat: 开发新功能 (feature)
- fix: 修复bug
- docs: 文档 (documents)
- style: 格式 不影响代码运行逻辑
- refactor: 重构
- test: 测试添加
- chore: 构建过程或者辅助工具的变动

Body:可以理解为内容,就是对header的补充,此处内容在可视化的git上是省略号(...)表示

code review

小编最近也开始去review其他同学的代码了,会遇到很多无厘头的在评论区加上英文缩写,真是一脸懵。不过缩写总是有来头的,下面给出几种常见的缩写简称

  • PR: Pull Request.
  • LGTM: Looks Good To Me.
  • SGTM: Sounds Good To Me.
  • WIP: Work In Progress.
  • PTAL: Please take A look.
  • TBR: To Be Reviewed.
  • TL;DR: Too Long;Didn't Read.
  • TBD: To Be Done(or Defined/Discussed/Decided/Determined).

转载于:https://www.cnblogs.com/chenshouchang/p/11004011.html

<think>我们正在解决代码审查过程中出现的cherry-pick合并冲突问题。用户的问题是如何在Git中解决cherry-pick操作时发生的合并冲突。 根据引用[1]引用[3],我们可以知道在cherry-pick过程中可能会遇到冲突,导致操作中断,并提示我们需要解决冲突。同时,引用[3]提到当有未解决的冲突时,Git会提示你需要先解决当前索引(index)中的冲突。 解决cherry-pick冲突的步骤通常如下: 1. 执行cherry-pick命令,指定要应用的提交: ```bash git cherry-pick <commit-hash> ``` 2. 如果发生冲突,Git会停止cherry-pick过程,并提示冲突的文件。此时,你需要手动解决这些冲突。 3. 解决冲突后,使用`git add`命令将解决后的文件标记为已解决: ```bash git add <resolved-file> ``` 4. 然后,继续cherry-pick操作: ```bash git cherry-pick --continue ``` 5. 如果在解决冲突过程中决定取消这次cherry-pick,可以执行: ```bash git cherry-pick --abort ``` 另外,引用[2]中提到了使用`git rebase`时解决冲突的步骤,与cherry-pick类似:解决冲突后,使用`git add`添加文件,然后`git rebase --continue`。但注意,cherry-pick使用的是`git cherry-pick --continue`。 引用[4]则提到了合并分支时冲突的解决,步骤也是类似的:先拉取代码,然后合并,解决冲突,再提交。 因此,我们可以总结出解决cherry-pick合并冲突的步骤。 下面给出详细步骤: ### 解决cherry-pick合并冲突的步骤 1. **执行cherry-pick命令**: ```bash git cherry-pick <commit-hash> ``` 如果发生冲突,Git会停止并显示冲突文件列表。 2. **手动解决冲突**: - 打开冲突文件,会看到类似如下的冲突标记: ``` <<<<<<< HEAD 当前分支的代码 ======= 要cherry-pick的提交的代码 >>>>>>> <commit-hash> ``` - 根据需求修改代码,删除冲突标记,保留正确的代码。 3. **标记冲突已解决**: 使用`git add`命令将解决后的文件添加到暂存区: ```bash git add <file> ``` 或者,如果所有冲突都已解决,可以使用: ```bash git add . ``` 4. **继续cherry-pick操作**: ```bash git cherry-pick --continue ``` 此时,Git会创建一个新的提交,这个提交的内容就是解决冲突后的结果。 5. **(可选)取消cherry-pick**: 如果在冲突解决过程中想放弃cherry-pick,可以执行: ```bash git cherry-pick --abort ``` 这样会回到cherry-pick之前的状态。 ### 注意项 - 在解决冲突时,你可能需要知道当前处于“分离头指针”(detached HEAD)状态(如引用[1]所述),但这不会影响冲突解决。只需要按照上述步骤操作即可。 - 如果你在cherry-pick多个提交时发生冲突,解决一个冲突后继续,可能会在下一个提交处再次遇到冲突,重复上述步骤直到完成。 - 使用`git status`可以查看当前的状态,包括哪些文件有冲突,以及下一步该做什么。 ### 示例 假设我们要cherry-pick提交`abc123`: ```bash $ git cherry-pick abc123 Auto-merging file.txt CONFLICT (content): Merge conflict in file.txt error: could not apply abc123... Original commit message hint: After resolving the conflicts, mark them with hint: "git add/rm <pathspec>", then run hint: "git cherry-pick --continue". hint: You can instead skip this commit with "git cherry-pick --skip". hint: To abort and get back to the state before "git cherry-pick", hint: run "git cherry-pick --abort". ``` 然后,我们编辑`file.txt`解决冲突,接着: ```bash $ git add file.txt $ git cherry-pick --continue [master 5678def] Commit message after resolving conflict Date: Thu May 20 12:00:00 2023 +0800 1 file changed, 1 insertion(+), 1 deletion(-) ``` 这样,cherry-pick就完成了。 ### 相关问题 1. 如何避免在cherry-pick时出现冲突? 2. 除了cherry-pick,还有哪些方法可以将特定提交应用到其他分支? 3. 在解决冲突时,如何比较当前分支与cherry-pick提交的差异?</think>### 解决 Cherry Pick 过程中的合并冲突 在代码审查过程中进行 cherry pick 操作时遇到合并冲突是常见问题,以下是完整的解决流程(结合引用[1][2][3][4]的最佳实践): #### 冲突解决步骤 1. **执行 cherry pick 并识别冲突** ```bash git cherry-pick <commit-hash> # 应用特定提交 ``` - 出现 `CONFLICT` 提示时(如引用[4]),Git 会列出冲突文件 - 使用 `git status` 查看未合并文件(标记为 `Unmerged paths`) 2. **手动解决文件冲突** - 打开冲突文件,定位冲突标记: ``` <<<<<<< HEAD 当前分支的代码 ======= cherry-pick 提交的代码 >>>>>>> <commit-hash> ``` - 手动编辑保留所需代码,删除冲突标记 `<<<<<<<`,`=======`,`>>>>>>>` 3. **标记冲突已解决** ```bash git add <resolved-file> # 添加每个解决后的文件 # 或批量添加所有解决文件 git add . ``` 4. **完成 cherry pick 操作** ```bash git cherry-pick --continue # 提交解决后的更改 ``` - 此时会打开编辑器确认提交消息,保存即可 5. **异常处理选项** ```bash git cherry-pick --abort # 完全放弃 cherry pick(返回原始状态) git cherry-pick --skip # 跳过当前提交(慎用,可能丢失更改) ``` #### 高级冲突处理技巧 1. **使用三方合并工具** ```bash git mergetool # 启动图形化冲突解决工具 ``` 2. **多提交 cherry pick 冲突** ```bash git cherry-pick -n <commit1> <commit2> # 一次性应用多个提交 # 解决所有冲突后一次性提交 git commit -m "Combined cherry-pick resolution" ``` 3. **冲突分析命令** ```bash git diff --check # 检查空白字符冲突 git log --merge -p <file> # 查看文件的合并历史 ``` #### 预防冲突的最佳实践 1. **保持提交原子化** 每个提交只做单一功能修改,减少大范围冲突概率 2. **定期变基更新分支** ```bash git pull origin master --rebase # 引用[2]的更新方式 ``` 3. **预检查冲突** ```bash git merge-tree `git merge-base A B` B A # 模拟合并结果 ``` > 关键要点:cherry pick 冲突本质是代码变更与目标分支不兼容,解决时需**理解变更意图**而非机械合并。复杂冲突应联系原提交者协助解决[^1][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值