• 优雅的提交你的Commit


    良好的Commit能体现程序员的职业素养。

    一、运行环境搭建

    apt-get install python3-pip
    pip3 install inquirer
    

    二、git-inquirer配置代码

    将以下代码内容保存到/usr/bin/git-inquirer,赋予可执行权限,然后输入git-inquirer即可生成一个交互式窗口来规范commit输入。

    #!/bin/python3
    
    import inquirer
    import sys
    from string import Template
    import subprocess
    
    def number_validation(answers, current):
      return int(current)
    
    def empty_validation(answers, current):
      return bool(current)
    
    def no_validation(answers, current):
      return True
    
    def addList(name, message, list):
      return inquirer.List(name, message, list)
    
    def addText(name, message, valid):
      return inquirer.Text(name, message, validate=valid)
    
    def addCheck(_name, _message, _choices):
      return inquirer.Checkbox(_name, message=_message, choices=_choices)
    
    questions = [
      addCheck("action", "选择非选项(空格选择,回车跳过)", ['Bug', 'Issue', 'Task'])
    ]
    
    optinalAnswers = inquirer.prompt(questions)
    
    questions = [
      addList('action', "select you action", ['fix', 'feat', 'refactor', 'docs', 'chore', 'style', 'pref', 'test']),
      addText("module", "input module name", no_validation),
      addText('title', "input title", empty_validation),
      addText('description', "input description", empty_validation),
      addText("log", "input log", empty_validation),
    ]
    
    optinal = {
      "Bug": addText("bug", "input bug id", empty_validation),
      "Issue": addText("issue", "input issue id", empty_validation),
      "Task": addText("task", "input task id", empty_validation),
    }
    
    optinalMap = {
      "Bug": "bug",
      "Issue": "issue",
      "Task": "task",
    }
    
    for action in optinalAnswers["action"]:
      questions.append(optinal[action])
    
    answers = inquirer.prompt(questions)
    
    template = '${action}'
    
    if answers["module"]:
      template += '(${module})'
    
    template += ': ${title}
    
    Description: ${description}
    
    Log: ${log}
    '
    
    for action in optinalAnswers["action"]:
      template += action + ": ${" + optinalMap[action] + "}
    "
    
    subprocess.run(["git", "commit", "-m", Template(template).substitute(answers)])
    

    三、常用参数解释

    优雅的提交Commit信息,也使用Angular团队提交规范。启动git-inquirer的常用注释如下:

    一、主要有以下组成:

    标题行: 必填, 描述主要修改类型和内容
    主题内容: 描述为什么修改, 做了什么样的修改, 以及开发的思路等等
    页脚注释: 放 Breaking Changes 或 Closed Issues

    二、常用的修改项有:

    type: commit 的类型
    feat: 新特性
    fix: 修改问题
    refactor: 代码重构
    docs: 文档修改
    style: 代码格式修改, 注意不是 css 修改
    test: 测试用例修改
    chore: 其他修改, 比如构建流程, 依赖管理
    scope: commit 影响的范围, 比如: route, component, utils, build...
    subject: commit 的概述
    body: commit 具体修改内容, 可以分为多行
    footer: 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接

    三、撤销commit

    执行完commit后,想撤回commit,仅仅是撤回commit操作,您写的代码仍然保留。

    git reset --soft HEAD^
    
    注:HEAD^的意思是上一个版本,也可以写成HEAD~1。
    如果你进行了2次commit,想都撤回,可以使用HEAD~2
    
    // 如果commit注释写错了,只是想改一下注释,只需要:
    git commit --amend
    

    参考:
    Franklin-Qi
    阮一峰
    inquirer

    作者:yusq77

    -------------------------------------------

    Wish you all the best and good health in 2021.

  • 相关阅读:
    第六周学习总结
    2,8,16进制转换的实现
    求最大公约数伪代码
    fibnacci数列递归实现
    2018-2019-1 20165337 实验五 通讯协议设计
    2018-2019-1 20165337 《信息安全系统设计基础》第九周学习总结
    2018-2019-1 20165325 20165320 20165337 实验四 外设驱动程序设计
    2018-2019-1 20165337 《信息安全系统设计基础》第八周学习总结
    2018-2019-1 20165337 实验三 实时系统
    2018-2019-1 20165337 《信息安全系统设计基础》第七周学习总结
  • 原文地址:https://www.cnblogs.com/yusq77/p/13930468.html
Copyright © 2020-2023  润新知