在一些(非常)罕见的情况下,我在仓库中做了一些无需解释的修改,以至于描述我的意图的提交消息有点无用。在这些情况下,我希望提交消息基本上只列出我添加/删除/编辑了哪些文件。例如:
添加了“狗. h”、“猫. h”
手动提交消息如下所示
添加了头文件
在这种情况下,最好不必实际编写提交消息,而是让它自动生成。
我知道这是一个非常糟糕的实践,但我只会将其用于私人项目的非专业存储库。我知道这很懒,但我很好奇如何做到这一点。Unix shell脚本是首选,但任何解决方案都是受欢迎的。
**问:**有没有办法自动生成一条git提交消息,列出哪些文件被修改了?
8条答案
按热度按时间iyzzxitl1#
如果你真的那么懒,你可以使用下面的代码:简单地说,它执行一个
git status
,提取new files
,deleted
,renamed
和modified
的行,并将其传递给git commit
调整
sed
部分以自定义您希望如何基于git status
的结果生成消息将其命名为较短的别名,或将其另存为脚本(例如
git-qcommit
),以便您可以将其用作git qcommit
来自
git log
的示例消息grep
更改为sed
,通过在Changes to be committed
和Untracked files
之间添加行,使提交消息生成逻辑更通用,并生成外观稍好的提交消息)*wlzqhblo2#
如果您不提供消息(使用
-m
标志),则会打开一条自动生成的消息,并要求您修改它(如果您使用)。现在只需从要插入的行(比如修改过的行)中删除
#
。我真的不鼓励你那样做,提交信息是非常重要的。
Related question,采用不同(可能更好)的方法。
wztqucjr3#
您可以使用
commit -m
命令来传递任何消息作为提交消息。另一个解决方案是使用模板配置选项定义默认模板。
一米一分一秒
存在**
commit.template
**配置变量。commit.template
指定要用作新提交消息模板的文件。
“~/”扩展为$HOME值,“~user/”扩展为指定用户的主目录。
bfnvny8b4#
下面是@adrian-shum命令的一个变体,它使用
git status --porcelain
来增强健壮性,格式为copy-and-paste:able git别名:Git别名在此要点中维护:
https://gist.github.com/erikw/654386d35ecfdb0354cd2b71763f19ae
这将产生一个带有消息的提交(最后一行),例如:
为什么要这么复杂的替换?因为修饰符可以分组,例如“RM a -〉b”意味着文件被重命名和修改。
643ylb085#
希望这有所帮助,您可以在.bashrc中的aliases for ls部分下配置别名,如下所示
∮ ∮这是做什么
1.向您显示所做的更改,并提示您在提交时暂存这些更改(-p)
1.提交一条消息(-m),其中包含使用
git status -s
所做的更改以及自分支启动git log | grep commit | wc -l
以来的更改数'1.推动变革
运行示例如下
dly7yett6#
在这种罕见的情况下,我喜欢使用标准的一个词的信息,如“平凡”。但其他可能是“无趣”或“addfiles”。重要的部分可能是它的一致性和可识别性。
但是我最近开始使用git leaders,比如“Add”和“Doc”,所以这些消息更有意义;例如,“增加:文件”。
如果您正在寻找一种有趣的方式,并且您的团队知道荒谬的消息意味着这是一个微不足道的提交,那么使用http://whatthecommit.com/来自动生成幽默的消息。
yuvru6vn7#
我所做的是在编辑器窗口打开的情况下保存文件,然后并行使用sed脚本进行编辑。例如,您可以使用sed -n '/new/ s/#//gp' commit_file,当您满意时,切换到sed -i,字符串以//g结尾。然后重新读取文件,如果您使用nano,请按CTRL+R commit_file,如果您想进行一些手动编辑并退出
5tmbdcev8#
根据阿德里安沈的回答,我写了一个小脚本。脚本链接仅供参考-〉https://codeberg.org/fftcc/gencommit/自动生成提交消息,也许它会对某人有用,脚本是设计来管理多个仓库(但它可以与一个),也可以全局工作,如果放在/usr/bin/。该项目仍然是原始的,但我希望您的支持!
文件生成提交:
文件. gencommittrc
生成提交
根据git状态自动生成提交。
它的用途和工作原理
如果需要在一个或多个仓库中同时自动创建提交,并且不需要提交消息有意义。
gencommit
查找所需的仓库,将所有文件添加到索引中,并根据git status中的信息将更改提交到仓库。入门
gencommit
是为在您的系统上全局使用而创建的,建议将gencommit
文件放在/usr/bin/
目录或您的操作系统的类似目录中,然后重新启动您的终端会话。在此之前,还需要授予执行权限:基本用法
您需要在每个目标资料档案库中创建一个名为
.gencommitrc
的配置文件。此文件不能为空,必须至少包含一个commit
选项。这是正确操作所必需的。接下来,您需要以用户身份在终端中运行应用程序
gencommit
。示例:
参数
gencommit
有一个参数--它将查找存储库的路径。默认情况下,这是用户的主目录~/示例:
选项.生成提交
!!!请务必遵循参数的写入顺序(与手动执行以下命令的方式相同:git pull-〉git add-〉git commit-〉git push),首先是
pull
、commit
,然后是push
。"pull"和"push"选项是可选的。commit
选项是必需的commit
-创建自动生成的提交pull
-运行git pull
命令push
-运行git push
命令