git - 如何自动生成提交信息

标签 git commit

在某些(非常)罕见的情况下,我会在我的存储库中进行一些不言自明的更改,以至于描述我的意图的提交消息有点无用。在这些情况下,我希望提交消息基本上只列出我添加/删除/编辑的文件。例如:

Added 'dog.h', 'cat.h'

手动提交信息看起来像

Added header files

在这种情况下,最好不必实际编写提交消息,而是自动生成它。

我知道这是非常糟糕的做法,但我只会将其用于用于私有(private)项目的非专业存储库。我知道这很懒惰,但我很好奇如何做到这一点。首选 Unix shell 脚本,但欢迎使用任何解决方案。

问:有没有办法自动生成 git 提交消息,列出已更改的文件?

最佳答案

如果你真的那么懒,你可以使用下面的方法。简而言之,它执行 git status,为 new filesdeletedrenamed 提取行修改,并传递给git commit

# LANG=C.UTF-8 or any UTF-8 English locale supported by your OS may be used
LANG=C git -c color.status=false status \
| sed -n -r -e '1,/Changes to be committed:/ d' \
            -e '1,1 d' \
            -e '/^Untracked files:/,$ d' \
            -e 's/^\s*//' \
            -e '/./p' \
| git commit -F -

调整 sed 部分以自定义您希望如何根据 git status 的结果生成消息

给它取一个简短的别名,或者将它保存为脚本(例如 git-qcommit),这样你就可以将它用作 git qcommit

来自 git log 的示例消息

adrianshum:~/workspace/foo-git (master) $ git log
commit 78dfe945e8ad6421b4be74cbb8a00deb21477437
Author: adrianshum <foo@bar.com>
Date:   Wed Jan 27 01:53:45 2016 +0000

renamed:    bar.txt -> bar2.txt
modified:   foo.txt

已编辑: 将原来的 grep 更改为 sed,通过在 Changes to be committedUntracked files< 之间添加行,使提交消息生成逻辑更加通用,并生成稍微好看一点的提交消息)

关于git - 如何自动生成提交信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010953/

相关文章:

git - 如何从 "Changed but not updated:"列表中清除 git 中的所有文件

Git 克隆因内存不足错误而失败 - "fatal: out of memory, malloc failed (tried to allocate 905574791 bytes)/fatal: index-pack failed"

git - 远程 : Invalid username or password. 致命:身份验证失败

xcode - git 与 XCode 并在 merge 时忽略 .xcodeproj?

svn - 我正在尝试提交大量源代码。为什么 txn Prop 文件丢失

git 添加 "Nothing specified nothing added "

git 提交频率

git - 如何让 Vim Ctrl-P 插件在 git 子模块中索引文件

git - 无法将上游更改 merge 回我的分支

git - 更改 Git 中错误的提交信息