自动生成git commit
记录用以统计个人项目周报,全组项目周报,版本、分支差异记录自动生成 Tag 等
- 生成(本人:默认/其他人/团队)(任意时间段/上周:默认)(任意项目/当前项目:默认)日志
- 控制是否覆盖已有文件
- 控制是否显示生成时间
- 指定分支比对、版本比对、
CHANGELOG
、publish
模式 - 比对模式可(指定/读取
package.json
:默认)版本生成对应文件名 - 分支比对模式可指定比对分支(当前:默认)
- 版本比对模式可指定比对版本(源版本/HEAD:默认、目标版本/最新版本:默认)
CHANGELOG
模式可检索全部标签并生成每个标签 logpublish
模式可基于当前分支代码生成版本 log,并与上个commit
合并,切到指定分支进行合并,生成并推送标签和代码至远程
-m
: 生成模式 默认:无(周报),可选:branch(分支比对)、tag(标签比对)、changelog(汇总日志)、publish(发布模式)、copy(将标签对比结果仅输出至剪切板该特性暂仅支持 macOS)、release-note(输出版本描述)-a
: 贡献者;默认:git
配置name
;可传 ''(所有贡献者)、任意成员name
-s
: 起始日期 默认:上周一,格式:2018-01-01-u
: 终止日期 默认:当天,格式:2018-01-01-S
: 源分支/标签 默认:无,比对模式:当前分支/最近标签 例:develop-T
: 目标分支/标签 默认:无,比对模式:当前分支/当前 HEAD 例:master-r
: Git 仓库本地路径 默认:当前目录-v
: 版本号 默认:无,比对模式:仓库路径下 package.json 中 VERSION 字段值-d
: log 输出目录 默认:仓库路径下 log 文件夹-f
: 覆盖文件 默认:否,不需要传值-t
: log 首行为生成日期 默认:否,不需要传值
➜ demo-project git:(master): npm install gen-git-log
示例为安装在全局后切到项目目录使用,因此不需要-r
参数, 并且本地代码与线上保持同步
➜ demo-project git:(master): git-log
# 此时需保证当前分支有未打tag的commit即可,即在开发分支即将合入master时使用最佳
➜ demo-project git:(develop): git-log -t -m tag
➜ demo-project git:(master): git-log -m changelog
发布模式会做以下几件事,因为可能会在master上提交代码,请慎用
- 根据版本号生成 log 文件,同标签对比模式
- 生成
commit
"chore: Publish version x.x.x
" - 添加所有文件到暂存区
- 确认目标分支(默认:
master
) - 切到目标分支
- 合并代码(
merge
)到目标分支 - 生成 tag
- 推送 tag
- 推送代码
- 复制版本
log
到剪切板 - 完成
➜ demo-project git:(master): git-log -m publish
➜ ~ cd ~/Downloads && git clone [email protected]:guchongxi/gen-git-log.git && ./gen-git-log && chmod +x gen-log.sh
- 执行
./gen-log.sh -r <path-to-your-repository>
- 自动在
log
文件夹(若无会自动创建)下生成{user}.md 文件
➜ demo-project git:(master): git-log
# [2018-03-06]
# * chore: 发布xx ([02f64964](https://xxx.xxx.xxx/xxx/xxx/commit/02f64964de959931074a253ed0ba185d96704c3d)) - 26 hours ago
# [2018-03-07]
# * fix: xxx ([14b475d5](https://xxx.xxx.xxx/xxx/xxx/commit/14b475d53655f14a1be3cb51fc24f372dfc4be79)) - 13 hours ago
# * chore: 发布xxx ([60cec8c0](https://xxx.xxx.xxx/xxx/xxx/commit/60cec8c03a160cc43063e16331e462401ea6390b)) - 4 hours ago
➜ demo-project git:(master): git-log -a ''
# [2018-03-06]
# * chore:xxx修改 ([82d1ae32](https://xxx.xxx.xxx/xxx/xxx/commit/82d1ae3224e4787660429d7ecad02b6d1b2f9387)) <xxx>
# * chore: xxx细节修改 ([42dad557](https://xxx.xxx.xxx/xxx/xxx/commit/42dad557fd9a766c82ad4563c36d6f9ce520cd9f)) <xxx>
# [2018-03-07]
# * fix: xxx ([14b475d5](https://xxx.xxx.xxx/xxx/xxx/commit/14b475d53655f14a1be3cb51fc24f372dfc4be79)) <oo>
➜ demo-project git:(master): git-log -m branch -S develop
# 或
➜ demo-project git:(master): git-log -m tag
# #### 新增
# * xxxx ([575001fb](https://xxx.xxx.xxx/xxx/xxx/commit/575001fb0a904bd6b900da9afbd6da28fb8aea05)) @xxx
# #### 修改
# * xxx ([92349b05](https://xxx.xxx.xxx/xxx/xxx/commit/92349b058b484829ae36d12e2f1d57251f2fa6a3)) @ooo
# * xxx ([36f52ea3](https://xxx.xxx.xxx/xxx/xxx/commit/36f52ea30446031387f449dd504c8cf5fd7dd7dd)) @ooo
# #### 其他
# * xxxx ([25706352](https://xxx.xxx.xxx/xxx/xxx/commit/257063524332cea17351dfa5a1a2fac602a980da)) @ooo
# * xxx ([6b20d235](https://xxx.xxx.xxx/xxx/xxx/commit/6b20d2350d64d0c2483d758449ad7723536eb9a8)) @ooo
# #### 文档
# * xx.0.2 ([60cec8c0](https://xxx.xxx.xxx/xxx/xxx/commit/60cec8c03a160cc43063e16331e462401ea6390b)) @ooo
# * xxx ([c23cb128](https://xxx.xxx.xxx/xxx/xxx/commit/c23cb128627d6811688b34dc2b7ea87ce6b515cb)) @ooo
➜ demo-project git:(master): git-log -d version
➜ demo-project git:(master): git-log -r <path-to-your-repository> -a someone -s 2018-01-01 -u 2018-01-31 -d git-log -f
commit
分类要求所有commit message
符合规范,及以feat fix refactor style docs chore build ci pref test
开头,后紧跟:
,然后是正文;例:feat: 新增git-log
- 生成版本差异建议先修改
package.json
版本号 - 尽可能保证功能分支 commit message 精简扼要
- 分支对比模式需要两个分支都在本地存在
- 团队周报中贡献者姓名为贡献者
git
配置name
- 版本日志中
@
后紧随贡献者git
配置email
用户名(即不包含@xx.xx) - 根据配置项可生成各种 git 记录,欢迎优化拓展