Git 流程优化-实践
  8CtDmU74qicX 2023年11月24日 24 0
  1. 用 git cz 代替 git commit 操作
  2. Git 流程优化-实践_分支结构

  3. 全局安装
    npm install -g commitizen cz-conventional-changelog
    npm i -g cz-customizable
  4. 写入配置
    echo'{ "path": "cz-customizable" }' > ~/.czrc
  5. 在项目根目录下写入文件.cz-config.js
module.exports = {

// 可选类型

types: [

{ value: 'feat', name: 'feat:     新功能' },

{ value: 'fix', name: 'fix:      修复' },

{ value: 'docs', name: 'docs:     文档变更' },

{ value: 'style', name: 'style:    代码格式(不影响代码运行的变动)' },

{ value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)' },

{ value: 'perf', name: 'perf:     性能优化' },

{ value: 'test', name: 'test:     增加测试' },

{ value: 'chore', name: 'chore:    构建过程或辅助工具的变动' },

{ value: 'revert', name: 'revert:   回退' },

{ value: 'build', name: 'build:    打包' },

],

// 消息步骤

messages: {

type: '请选择提交类型:',

scope: '请选择一个scope (可选):',

customScope: '请输入修改范围(可选):',

subject: '请简要描述提交(必填):',

body: '请输入详细描述,使用“|”进行换行(可选):',

footer: '请输入要关闭的issue,或打上私有部署标签(可选):',

confirmCommit: '确认使用以上信息提交?(y/n/e/h)',

},

allowCustomScopes: true,

scopes: [

{ name: '树结构模块' },

{ name: '设计稿模块' },

{ name: '单页模块' },

{ name: '原型稿模块' },

{ name: '演示模块' },

],

// 跳过问题

skipQuestions: ['body', 'scope'],

// subject文字长度默认是72

subjectLimit: 72,

};

  1. 现在可以在命令行中使用 git cz 操作来替代git commit 了。
  2. 私有化部署如何较少冲突
  3. 优化commit-message ,使用git cz 提交commit 信息,在footer 中打上标签 #readme问题号(2023.1-p)
  4. git rebase ,在合并分之前都确保分支是经过git rebase 变基之后的提交。使分支更好路径更简洁,方便查看代码提交以及生成gitlog。以及分支合并策略 - 从最先提交开始合并。保证我们的分支如下图,形成一条笔直的直线状态。(rebase 原理在于在本地先同步远程分支,并解决了冲突了,在cherr-pick过程中就不会产生冲突)
  5. gitlab中配置 merge前进行 git rebase操作。(在配置这个前,最好的方法是尽快合并开发分支到月度版本上,尽可能避免同时几个分支需要合并的情况)
    目前先将各自的合并请求发送到小组群里。
  6. 通过git log 来检索过滤有带有私有部署的commitID。再通过 git chery-pick commitID 来将私有化部署迁移到私有化分支上
    1. 配置别名
    git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cd) %C(bold blue)<%an>%Creset %b' --date=format:"%Y-%m-%d %H:%M:%S""
    2. 执行 私有化部署查询 并 在私有化分支上新开一个分支 通过cherry-pick 从列表最底端开始pick操作。
    git lg --grep="2023.1-p"

Git 流程优化-实践_分支结构_02


git cherry-pick c72c479

最后再将新建的分支,合并到私有化部署主分支上。最后再将整个版本合并到私有化部署分支上,也不会出现冲突,大功告成
3. 整体流程如下

  1. 在自己的分支上修改代码,需要提交代码时
  2. git add .
  3. git cz (替代原来的git commit -m ,不再使用 git commit 了)
  4. 根据git cz 控制面板提示选择和填写

Git 流程优化-实践_分支结构_03

Git 流程优化-实践_git_04


5. git push 将我们本地分支推送到远程

6. 在 gitlab 中进行merge 合并代码申请

Git 流程优化-实践_git_05


Git 流程优化-实践_git_06

  1. 如果需要 进行rebase 重新提交的,流程如下
    1. 在自己本地分支上 执行 git rebase origin/dev-2023-02
    2. 如果有冲突,先修改冲突,然后执行git add . 和 git rebase --continue
    3. 将本地分支强推到远程 git push -f (切记不可根据提示 执行 git pull )
    4. 推送远程成功后,再到gitlab上进行分支合并就不会落后taget分支提示了,可以正常合并代码
  2. 我们的目标
  3. 回顾过去的分支记录
  4. Git 流程优化-实践_git_07

  5. 现在稍微努力后的分支记录
  6. Git 流程优化-实践_分支合并_08

  7. 第一周适应过程,大家遇见不同的问题多沟通多讨论
  8. 第二周全面严格执行,让合并分支变成一根笔直的线 (如下图lodash团队分支图)
  9. Git 流程优化-实践_分支结构_09

  10. 关于思想问题
  11. 本地分支(fix分支) 合并 到主开发分支(dev-2023-02)需要 先进行rebase 这个操作,目的是为了同步远程分支,为什么不能使用merge? 那什么情况下需要使用merge,merge or rebase 如何选择?
    首先merge 和 rebase 都能达到同步分支的效果,merge 会使得我们本地分支保留我们拉分支的时间,并且会生成一个新的commit合并记录。但也会使得我们整个分支结构看起来十分混乱。如果小团队人员多起来,我们整个分支结构将变得很难管理,如遇到 需要代码回退,解决冲突问题变得十分棘手,稍不注意会出现 解决冲突代码被合并掉了 这种大问题,不利于分支以及代码的管理。并且merge 处理冲突需要手动再加一个commit ,如果后续需要进行chery-pick 还得把冲突的commit 一起搞过去。

使用rebase 能很好解决merge带来的混乱问题,让分支结构清晰明了。rebase的变基操作,让我们去除了我们拉取分支时间这个多余的信息干扰,我们本地分支合并 dev分支,我们是不在乎你什么时候拉的分支,只在乎你什么时候合并的分支,所以这儿rebase 也能起到很好的过滤无用信息的作用。

那我们什么时候时候使用merge?原则思想是,当我们在乎 我们分支拉取的时间,需要保留这个信息的时候,我们要同步主分支的代码时就使用merge。 例如: master上有hotfix分支更新,我们想把master上的hotfix修改的代码 同步到我们本月开发分支 dev-2023-02 上时,这个时候就需要使用 merge, 为什么不能用rebase?

因为我们在意 我们dev-2023-02分支 拉取的时间(这个是月度开发分支,基准点具有一定的参考意义,不能随意改变)

Git 流程优化-实践_分支合并_10

具体关于merge 和rebase 的区别,参考
2. 为什么要去规范git流程?

  1. git 分支合并记录清晰,明了。了解一个项目从代码合并分支图,能很清晰看到这个版本的需求情况
  2. 有利于分支管理和代码管理,如遇到需要 代码回退情况,清晰的合并记录能很简单解决回退问题,且不容易出现代码掉了的情况
  3. 有利于冲突的解决,每个合并分支都先进行rebase,后续代码合并都是最小冲突的版本。
  4. 有利于解决 私有化部署 反复来回合并 出现大量冲突问题。
  5. 加上其他的一些流程优化,让我们整体流程变得更加合理,规范,便于管理,减少冲突
  6. 分支合并后,就遗弃。重新从开发分支上拉分支。尽量不要一个分支用到底。
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
8CtDmU74qicX