欢迎来到 Franklin-Qi 的世界

Max
Min

优雅的提交你的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}\n\nDescription: ${description}\n\nLog: ${log}\n'

for action in optinalAnswers["action"]:
  template += action + ": ${" + optinalMap[action] + "}\n"

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

posted on 2020-11-05 10:47  yusq77  阅读(243)  评论(0编辑  收藏  举报

导航