【问题标题】:Git commit with no commit message没有提交消息的 Git 提交
【发布时间】:2011-09-07 06:33:43
【问题描述】:

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

【问题讨论】:

  • 最后,git commit -a --allow-empty-message -m '' 甚至不会再打开编辑器了。见my answer below
  • 在 Windows 上,此命令 git commit -a --allow-empty-message -m '' 使用提交消息“''”进行提交,因此最好使用此命令:git commit -a --allow-empty-message -m ""

标签: git message commit


【解决方案1】:

git 通常需要非空消息,因为提供有意义的提交消息是良好开发实践和良好存储库管理的一部分。提交信息的第一行在 git 中到处都是;更多信息,请阅读"A Note About Git Commit Messages"

如果你打开 Terminal.app,cd 到你的项目目录,git commit -am '',你会看到它失败了,因为一个空的提交信息是不允许的。较新版本的 git 具有
--allow-empty-message 命令行参数,包括最新版本的 Xcode 中包含的 git 版本。这将让你使用这个命令来提交一个空消息:

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

--allow-empty-message 标志之前,您必须使用commit-tree 管道命令。您可以在the Git bookthe "Raw Git" chapter 中看到使用此命令的示例。

【讨论】:

  • 我认为“提供有意义的提交消息是良好开发实践的一部分”这句话是错误的——可以说提供有意义的提交消息被认为是 成为良好开发实践的一部分,因为该声明无论如何都会引起分歧 - 我相信较少的信息有时会导致较少的混乱,特别是因为 git 显然将实际更改存储到存储库,git diff 将向感兴趣的一方准确地展示一个提交包含的什么,而不依赖于人类的书面描述。机器应该尽可能让我们免于劳动。
  • @amn,我也刚开始想知道我写的那成千上万条写得很好的提交消息,这些消息永远不会被任何人阅读。对我来说,这个习惯的价值在于它迫使我查看变化以试图描述它们,这有时会让我注意到错误。不过,你是对的。我会考虑更多地关注代码而不是提交信息。
  • Git 不再仅仅用于代码开发。当我更新 GitHub wiki 页面或 Overleaf LaTeX 文档时,通常没有什么可说的,因为我正在更新 文档。 关于更改的所有语义上有意义的内容都包含在 diff 中。实际上,我发现自己使用更改的文本作为提交消息本身:完全多余!
  • git commit -m "yea" - 听起来有点像 Bill Lumbergh,“嗯,是的……”
  • @amn ,有时git diff 的输出不是不言自明的,即使提交者认为是这样。
【解决方案2】:

如果你给它加上一个别名那就更好了,对吧?

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

现在你只做一个 nccommit, nc 因为没有评论,一切都应该被提交。

【讨论】:

  • 我必须在“消息”中添加一个空格,所以它是... -m " "'
【解决方案3】:

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

git commit -am'.'

或更短:

git commit -am.

这会添加一个带有消息.的提交

【讨论】:

  • 那有什么作用?
  • 添加带有消息“.”的提交
  • 当我完全不记得我提交的内容并且懒得diff 这一切时,我会使用这种方法。
【解决方案4】:

注意:starting git1.8.3.2(2013 年 7 月),以下命令(mentioned above by Jeremy W Sherman)将不再打开编辑器:

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

commit 25206778aac776fc6cc4887653fdae476c7a9b5a:

如果使用 git commit 的选项 -m 指定了空消息,则启动编辑器。
这是出乎意料和不必要的。
不要使用消息字符串的长度来检查用户是否指定了一个,而是直接记住是否给出了选项-m


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

参见Adam Dinwoodie (me-and)commit 178e814(2016 年 4 月 6 日)。
请参阅 Jeff King (peff)commit 27014cb(2016 年 4 月 7 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 0709261,2016 年 4 月 22 日)

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 为空,但它没有,而是使用模板文件中的内容。

【讨论】:

    【解决方案5】:

    --allow-empty-message -m ''(和-m "")在 PowerShell 上的 Git 2.29.2 中失败:

    错误:开关 `m' 需要一个值

    (奇怪的是,一边是反引号,另一边是单引号)


    以下内容在 Linux、PowerShell 和命令提示符中始终有效:

    git commit --allow-empty-message --no-edit
    

    --no-edit 位可以解决问题,因为它会阻止编辑器启动。

    我发现这种形式比使用 -m '' 强制发送空消息更明确,也没有那么麻烦。

    【讨论】:

    • 在 Windows 上,我会尝试使用双引号:-m ""
    • 我做到了。它们在 PowerShell 中也失败了(它们在命令提示符下工作,但我不使用它。)不必为每个平台记住不同的语法是我更喜欢 --no-edit 的原因。
    【解决方案6】:

    Git 需要提交才能有评论,否则它不会接受提交。

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

    【讨论】:

    • 不知道为什么这个答案被否决了。我同意强制 Git 接受空提交消息,或者使用像“保存”这样的消息是一个坏主意。停止战斗,学习该死的工具。
    【解决方案7】:

    你不需要 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”。

    【讨论】:

    • 您能否提供更多有关如何设置此 bash 功能的详细信息?
    • 假设您在 OSX 或 Linux 上,您可以复制这些函数并将它们放在您的 .profile 中(应该在您的主文件夹中,如果没有则创建它)。打开一个新的控制台窗口,您将可以使用这些命令。对这些文件所做的任何更改都需要您刷新 bash 会话,以便您可以通过向该文件添加以下别名来加快速度: alias ea="subl ~/.profile" # subl 是我的文本编辑器,用您自己的替换alias er="source ~/.profile" # 这将重置现在,当您要添加快捷方式时,您只需键入“ea”(编辑别名)并刷新 er
    • 如果您调用脚本git-comgit-zap(不带扩展名)并将它们放在git 可以找到它们的地方(即在您的PATH 中的某处),git 会将它们视为常规git 命令,您可以像这样调用它们:git com, git zap origin master
    • 在 bash 中是 function gitcom {gitcom() { TMK,修复了吗?
    【解决方案8】:

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

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

    这样,当我赶时间时,我会这样做

    git auto
    git push
    

    至少我知道提交是由什么设备制成的。

    【讨论】:

      【解决方案9】:

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

      git commit -am'save'
      

      就是这样,你将解决 git commit message 的问题。

      您甚至可以将该推荐保存到 bash 或其他内容中以使其更简单。

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

      提交消息至少在我们的团队中是一种消磨时间的东西,所以我们忽略它。

      【讨论】:

        猜你喜欢
        • 2019-12-11
        • 1970-01-01
        • 2021-03-06
        • 2015-11-09
        • 2019-10-25
        • 2020-03-14
        • 2013-12-24
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多