Git提交,没有提交消息


108

如何在不指定提交消息的情况下提交更改?为什么默认情况下需要它?


6
最后,git commit -a --allow-empty-message -m ''甚至不再打开编辑器。请在下面
VonC

2
在Windows上,此命令git commit -a --allow-empty-message -m ''使用提交消息“ ''” 进行提交,因此最好改用以下命令:git commit -a --allow-empty-message -m ""
tav

Answers:


137

git通常需要一个非空消息,因为提供有意义的提交消息是良好开发实践和良好仓库管理的一部分。提交消息的第一行在git中的所有位置使用;有关更多信息,请阅读“有关Git提交消息的说明”

如果打开Terminal.app,cd将其打开到项目目录,然后git commit -am ''将看到失败,因为不允许空提交消息。较新版本的git具有
--allow-empty-message命令行参数,包括最新版本的Xcode附带的git版本。这将使您可以使用以下命令来提交带有空消息的提交:

git commit -a --allow-empty-message -m ''

--allow-empty-message标记之前,您必须使用commit-tree管道命令。您可以在Git书的“原始Git”一章中看到使用此命令的示例。


1
较新的版本git具有--allow-empty-message命令行参数。请参阅此处的文档。它提到您曾经能够使用plumbing命令完成相同的操作git-commit-tree
杰里米·W·谢尔曼

18
我认为“提供有意义的提交消息良好开发实践的一部分”这句话是错误的-可以说,提供有意义的提交消息被视为良好开发实践的一部分,因为无论如何该声明都是有分歧的-我赞成有时认为,信息少导致更少的混乱,尤其是明显的Git存储到存储库中的实际变化,并且git diff会显示相关方究竟是什么提交包含,不依赖人的书面说明。机器应尽可能使我们免于劳动。
2014年

2
@amn,我也刚刚开始想知道我写的所有成千上万的提交消息,这些消息永远不会被任何人读取。现在对我而言,这种习惯的价值在于,它迫使我仔细观察一下变化以描述它们,这有时使我注意到错误。你说的没错。我将考虑更多地关注代码,而不是提交消息。
osa 2015年

7
Git不再仅用于代码开发。当我更新GitHub Wiki页面或Overleaf LaTeX文档时,通常无话可说,因为我正在更新文档。与变更相关的所有语义上有意义的内容都包含在diff中。实际上,我发现自己将更改文本用作提交消息本身:完全多余!
Jim Pivarski '16

1
@amn,有时git diff即使提交者认为是正确的,其输出也不是不言自明的。
cowlinator

26

而且,如果为其添加别名,那就更好了吗?

git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'

现在,您只需要执行nccommit,nc即可,因为没有注释,因此所有内容都应提交。


19

在进行重要的代码更新时,如果您确实需要一个中间安全点,则可以这样做:

git commit -am'.'

或更短:

git commit -am.

那怎么办?
fishinear

添加带有消息“。”的提交。
lessadaisical

当我实际上不记得提交的内容并且对diff所有内容都懒惰时,可以使用此方法。
TheTechRobo36414519

16

注:开始git1.8.3.2(7月2013),下面的命令(上述杰里米·w ^谢尔曼)不会再打开编辑器:

git commit --allow-empty-message -m ''

参见commit 25206778aac776fc6cc4887653fdae476c7a9b5a

如果使用-mgit commit 选项指定了空消息,则将启动编辑器。
这是意外的和不必要的。
与其使用消息字符串的长度来检查用户是否指定了字符串,不如直接记住是否-m给出了该选项。


git 2.9(2016年6月)改进了空消息的行为:

参见Adam Dinwoodie()提交178e814(2016年4月6日。 参见Jeff King(提交的commit 27014cb(2016年4月7日(通过合并JUNIOÇ滨野- -提交0709261,2016年4月22日)me-and
peff
gitster

commit:不要忽略由发出的空消息 -m ''

  • git commit --amend -m '' --allow-empty-message即使看起来很奇怪,“ ”也是将提交修改为完全没有消息的有效请求。
    由于未-m在命令行上正确检测到,我们最终将日志消息与原始提交保持隔离。
  • git commit -m "$msg" -F file不论是否$msg为空字符串,都应拒绝“ ” ,但由于相同的错误,$msg为空。
  • git -c template=file -m "$msg"”即使$msg为空也应忽略模板,但不是,而是使用了模板文件中的内容。

3

您不需要git即可完成此操作。创造性地使用bash函数可以解决问题。如果您不关心邮件,只需设置默认邮件,然后将其忘记即可。

function gitcom() {
  git commit -m "my default commit message"
}

如果您真的很冒险,可以使用一个命令添加,提交和推送

function gitzap() {
  git add . && git commit -m "whatevs" && git push $1 $2
}

然后您将运行为

gitzap origin master

您甚至可以更深入地学习并使用parse_git_branch在此处保存一些击键,或者将“ origin”和“ master”设置为通用默认值。


1
您能否提供更多有关如何设置此bash功能的详细信息?
adaam

1
假设您使用的是OSX或Linux,则可以复制这些功能并将其放置在.profile中(应该位于主文件夹中,如果没有,则创建它)。打开一个新的控制台窗口,这些命令将对您可用。对这些文件进行的任何更改都将要求您刷新bash会话,以便通过向该文件添加以下别名来加快处理速度:alias ea =“ subl〜/ .profile”#subl是我的文本编辑器,用您自己的文本编辑器替代alias er =“ source〜/ .profile”#这将重置现在,当您想添加快捷方式时,只需键入“ ea”(编辑别名)并刷新er
Steven Garcia 2015年

2
如果你调用脚本git-comgit-zap:(不扩展),并把他们的git的地方可以找到他们(即在PATH中的某个地方),Git的对待他们像普通的git命令,你可以调用它们像这样git comgit zap origin master
Manuzor

1
在bash它要么function gitcom {gitcom() {TMK,修复?

2

Git要求提交具有评论,否则它将不接受提交。

您可以使用git作为默认提交消息配置默认模板,也可以在git中查找--allow-empty-message标志。我认为(不是100%肯定)您可以重新配置git以接受空的提交消息(这不是一个好主意)。通常,每次提交都应做一些工作,这由您的消息描述。


1
不知道为什么这个答案被否决了。我同意强迫Git接受空的提交消息,或使用诸如“保存”之类的消息是一个坏主意。停止战斗,只学习该死的工具。
Jezen Thomas 2016年

1

我找到了最简单的解决方案:

git commit -am'save'

就是这样,您将解决git commit消息问题。

您甚至可以将该表述保存为bash或其他内容,以使其变得更加简单。

我们的团队成员总是写这些消息,但是几乎没有人会再次看到这些消息。

提交消息至少在我们的团队中是一项耗时的工作,因此我们将其忽略。


1

我的私人项目中有以下配置:

git config alias.auto 'commit -a -m "changes made from [device name]"'

这样,当我着急的时候

git auto
git push

至少我知道提交的设备。


-5

提交消息是最佳做法,应始终遵循。除非您是唯一的开发人员,否则这不会很快改变。

git commit -a -m 'asdfasdfadsfsdf'

那是个玩笑。但是您只需做出少量提交即可将更改提交到heroku(例如),这在单个开发人员实例中就可以了。
coloradoblue
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.