在某些(非常)罕见的情况下,我会在我的存储库中进行一些不言自明的更改,以至于描述我的意图的提交消息有点无用。在这些情况下,我希望提交消息基本上只列出我添加/删除/编辑的文件。例如:
Added 'dog.h', 'cat.h'
手动提交信息看起来像
Added header files
在这种情况下,最好不必实际编写提交消息,而是自动生成它。
我知道这是非常糟糕的做法,但我只会将其用于用于私有(private)项目的非专业存储库。我知道这很懒惰,但我很好奇如何做到这一点。首选 Unix shell 脚本,但欢迎使用任何解决方案。
问:有没有办法自动生成 git 提交消息,列出已更改的文件?
最佳答案
如果你真的那么懒,你可以使用下面的方法。简而言之,它执行 git status
,为 new files
、deleted
、renamed
和 提取行修改
,并传递给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 committed
和 Untracked files< 之间添加行,使提交消息生成逻辑更加通用
,并生成稍微好看一点的提交消息)
关于git - 如何自动生成提交信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010953/