为了强化代码记录的可读性并协助 Code review 的执行,通过参考已有流程方案,设定一种适合的 Git 流程方案。
流程步骤
- 新建分支
- 提交 commit 记录
- 合并 commit 记录
- 推送到对应的远程仓库
- 提交 Merge Request 申请
$ git checkout -b case-KJDS-00000
第二步:提交 commit 记录 添加功能后进行 commit,commit 时需要携带足够的修改信息。
$ git add .
$ git commit -m "header: some message"
第三步:合并多个 commit 记录
假设在 feature 功能分支上新增了 4 条开发记录:commit 34d364d9d51dc94b264e99f7a92add50dd2c3987
Author: Aeo
Date: Sun Jun 25 12:27:02 2016 +0800misc: forth commitcommit 27322cb4b3f99226ffa98240460b90d92ed55a17
Author: Aeo
Date: Sun Jun 25 12:26:42 2016 +0800misc: third commitcommit 405b957a96a7dbe352cf7da9a422312a735f6081
Author: Aeo
Date: Sun Jun 25 12:26:16 2016 +0800misc: second commitcommit cc12fc86a7738ee2f9a8a48c31a9435232c2b08f
Author: Aeo
Date: Sun Jun 25 12:25:53 2016 +0800misc: first commit
现在我们已经完成了 feature 分支的开发和联调,需要把代码合并到当前主开发分支。
此时可以合并一些不必要的 commit 使主开发分支保持干净,优先推荐 git rebase 进行合并操作。
如果你想要合并最后 4 个 commit,你可以运行下列命令:
$ git rebase -i HEAD~4这时 git 会打开一个互动界面,方便用户对历史提交进行修改:pick cc12fc8 misc: first commit
pick 405b957 misc: second commit
pick 27322cb misc: third commit
pick 34d364d misc: forth commit# Rebase 2763481..34d364d onto 2763481 (4 command(s))
#
# Commands:
# p, pick = 使用该提交
# r, reword = 使用该提交,但需要编辑提交信息
# e, edit = 使用该提交,但此处暂停并提供修改机会
# s, squash = 使用该提交,但合并到上一个提交记录中
# f, fixup = 类似 squash,但丢弃当前提交记录的提交信息
# x, exec = 执行 shell 命令
# d, drop = 移除当前提交
我们需要的是利用 squash 或者 fixup 进行分支合并:
pick cc12fc8 misc: first commit
squash 405b957 misc: second commit
squash 27322cb misc: third commit
squash 34d364d misc: forth commit
若使用 fixup 的话,则直接丢弃其它记录,省去下一步操作。但使用 squash 时,则需要在下一步中对这 4 条 commit 信息进行修改和保存:
# This is a combinatin of 4 commits.
# This is the 1st commit message:misc: first commit# This is the commit message #2:misc: second commit# This is the commit message #3:misc: third commit# This is the commit message #4:misc: forth commit
编辑并保存后,通过 git log 可以看到仅剩一条 commit 记录:
# 此时的 commit SHA 与之前的并不相同
commit da473276aa981f6e29577aa09a525109971547f2
Author: Aeo
Date: Sun Jun 25 12:50:53 2016 +0800misc: first commit
rebase 的风险: 使用 rebase 需要遵循一条准则:第四步:推送到对应的远程仓库 完成 commit 记录的合并后,此时可以反合目标分支的最新代码,避免后续提交 Merge Request 时存在冲突。
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
简单来说,当待合并 commit 记录中杂糅着他人的 commit 记录,此时就不可以再对这部分 commit 记录做合并操作。
但只要新开分支且保持分支独立开发,杂糅的情况就不存在。
$ git push origin case-KJDS-00000
第五步:提交 Merge Request 申请 当完成功能后提交到远程后,需要经过下述流程:
- 提交 Merge Request:
通过「+Create Merge Request」按钮创建一个 Merge Request;
- 必须指定「Assignee」:
指定需要 review 你代码的同学,禁止指定自己;
- 更改「Target branch」:
改变为需要合并进去的目标分支;
- 设置合并后删除被合并分支的选项:
勾选「Remove source branch when merge request is accepted.」选项,在合并完成后删除源分支,控制分支总数量;
- 使用「Submit Merge Request」提交合并请求。
如果发现问题则对问题代码进行点评并拒绝关闭申请,反之则通过合并申请。
合并申请通过后留下的 Merge Request 记录,也就记录了 code reviewer 。
注: 拉取远程代码时,使用 git pull --rebase 就可以保持提交历史记录的整洁。
推荐阅读
- transformer|Swin-Transformer代码讲解-Video Swin-Transformer
- git使用技巧备忘(持续更新。。。)
- git 高级操作
- 同步GIT仓库的操作 -- pull命令
- git|git简单命令
- Git|Tomcat 自定义错误页面(例如404页面等等)
- 本地项目添加到gitee仓库管理
- centos|搭建Git服务器
- Git clone~fatal: protocol '?http' is not supported。解决办法。
- github开通,史上最全demo集合,各种demo持续更新中