作者:张新
git rebase -i --autosquash master
),从而保证你本地的提交应用于所有历史提交的最顶端,而不会去创建 Merge Commit针对更加复杂的项目(如一个项目里面牵涉多个子项目),为了不影响发布,Git 分支原则如下:
基于上面提到的 Git 通用规则和一些常用的分支命名规则,我们会采用功能分支策略 + 交互式 Rebase:
git clone ssh://git@git.guoxiaomei.cn:2224/fee/supply_chain.git
cd <项目目录>
如果是(已有项目)随后的功能开发/代码变动,这一步请忽略。
git checkout -b <分支名称>
git add .
git commit -m 'your commit message'
Git 提交消息格式也需要满足规范要求,见下文。
git checkout master
git pull --rebase
时刻保持与远程仓库的同步是一个好习惯,可以提前解决有可能的代码冲突。
git checkout <your-feature-branch>
git rebase -i --autosquash master
没有人会愿意看到单个功能分支中的功能开发就占据如此多的提交历史。某些第三方 Git 代码管理平台(如 企业级的 Gitlab)提供该功能,在代码合并会时会自动帮你完成。
git add <file1> <file2> ...
git rebase --continue
git push -f
当您进行变基操作时,您会改变功能分支的提交历史,那么您必须使用 -f 或 --force 才能数强制推送到远程功能分支。
git branch -D <your-feature-branch>
某些第三方 Git 代码管理平台(如 Github/Gitlab)在合并 PR/MR 时提供自动删除分支功能。
请移玉步至 How to Write a Git Commit Message
TLDR:
推荐二个值得参考的 Git 提交消息最佳实践:
二者大同小异,完全满足上面这七大原则,都可以帮助团队统一 Git 提交消息格式,从而与他人协作更加方便。
推荐使用 commitizen 来帮助团队规范化整个流程,与 npm scripts 配合自动化整个流程。
随着团队人员增多,我们需要一种工具能够自动化帮助我们检测 Git 提交消息格式是否满足规范要求。推荐使用 marionebl/commitlint 来自动化 Lint Git 提交的消息格式,并且配合 prepush hook 一起使用。
如果是库或是框架的开发,我们需要提供 CHANGELOG,以让团队内部和外部人员知道我们最近所做的更新,如修改的 Bugs,新增加的功能或是其它性能上的提升等等。
网站内容许可证:公共领域(public domain)