如何在不指定提交消息的情况下提交更改? 为什么默认情况下需要提交消息?
Git 通常需要非空消息,因为提供有意义的提交消息是良好开发实践和良好存储库管理的一部分。提交消息的第一行在 git 中的所有位置都被使用; 要了解更多信息,请阅读 “关于 Git 提交消息的说明”。
如果在项目目录中打开 Terminal. app、 cd和 git commit -am '',您将看到它失败了,因为不允许出现空提交消息。新版本的 git 具有 --allow-empty-message命令行参数,包括最新版本 Xcode 中包含的 git 版本。这将允许您使用此命令以空消息进行提交:
cd
git commit -am ''
--allow-empty-message
git commit -a --allow-empty-message -m ''
在使用 --allow-empty-message标志之前,必须使用 commit-tree管道命令。您可以在 Git 的书的 “生饭桶”那一章中看到使用此命令的示例。
commit-tree
Git 需要提交才能有注释,否则它不会接受提交。
可以使用 git 配置默认模板作为默认提交消息,也可以在 git 中查找—— allow-void-message 标志。我认为(不是100% 肯定)您可以重新配置 git 以接受空提交消息(这不是一个好主意)。通常,每次提交都需要一些工作,这些工作由消息描述。
注意: 开始 git1.8.3.2(2013年7月) ,以下命令(上面提到的 by Jeremy W Sherman)将不再打开编辑器:
git commit --allow-empty-message -m ''
见 提交25206778aac776fc6cc4887653fdae476c7a9b5a:
如果使用 git commit 的 -m选项指定了空消息,则启动编辑器。 这是意料之外的,也是不必要的。 不要使用消息字符串的长度来检查用户是否指定了一个,而是直接记住是否给出了选项 -m。
-m
Git 2.9(2016年6月)改进了空消息行为:
见 犯罪,第178季,第814集(2016年4月6日) by 亚当 · 丁伍迪(me-and)。 见 提交27014cb(2016年4月7日) by 杰夫 · 金(peff)。 (由 朱尼奥 · C · 哈马诺 gitster于2016年4月22日合并于 提交0709261)
me-and
peff
gitster
不要忽略由 -m ''给出的空消息 “ git commit --amend -m '' --allow-empty-message”,尽管看起来很奇怪,但它是修改提交以完全没有消息的有效请求。 由于在命令行上错误检测到 -m的存在,我们最终保留了原始提交中的日志消息。 无论 $msg是否为空字符串,“ git commit -m "$msg" -F file”都应该被拒绝,但由于同样的错误,当 $msg为空时没有被拒绝。 “ git -c template=file -m "$msg"”应该忽略模板,即使 $msg是空的,但它没有,而是使用模板文件的内容。
-m ''
git commit --amend -m '' --allow-empty-message
$msg
git commit -m "$msg" -F file
git -c template=file -m "$msg"
如果你给它加个化名,那就更好了,对吧?
git config --global alias.nccommit 'commit -a --allow-empty-message -m ""'
现在只需要执行 nccommit,nc 因为没有注释,所有内容都应该被提交。
我找到了最简单的解决办法:
git commit -am'save'
这就是全部,你将围绕 git 提交消息的东西工作。
你甚至可以将这个推荐保存到 bash 或其他东西中,使它更加简单。
我们的团队成员总是写这些消息,但几乎没有人会再看到这些消息。
至少在我们的团队中,提交消息是消磨时间的东西,所以我们忽略它。
当处理一个重要的代码更新时,如果您真的需要一个中间检查点,您可以这样做:
git commit -am'.'
或更短:
git commit -am.
这将使用消息 .添加一个提交
.
你不需要 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 为自己节省一些击键次数,或者设置一个常见的默认值“ source”和“ master”。
在我的私人项目中有以下配置:
git config alias.auto 'commit -a -m "changes made from [device name]"'
那样的话,我赶时间的时候就会
git auto git push
至少我知道提交的设备是什么了。
在 PowerShell 上,--allow-empty-message -m ''(和 -m "")在 Git 2.29.2中失败:
--allow-empty-message -m ''
-m ""
开关‘ m’需要一个值
(奇怪的是,一边是反勾,另一边是单引号)
以下内容在 Linux、 PowerShell 和命令提示符中始终如一:
git commit --allow-empty-message --no-edit
--no-edit位起到了这个作用,因为它阻止了编辑器的启动。
--no-edit
我发现这种形式比使用 -m ''强制执行空消息更明确,也不那么粗俗。
在一些其他答案的基础上,我得出了以下结论:
git config --global alias.gromit '!git add --all && git commit --allow-empty-message -m ""'
这与 dalvarezmartinez1的答案不同,因为 git add --all也添加了新文件,而 git commit中的 -a标志保留了这些新文件。而且,我认为这个别名更适合这个命令。:-)
git add --all
git commit
-a
未来的自己,原谅我所有的沉默,快速,伟大的承诺来。