git core.commentChar=auto 是做什么的?



我正在用git-commit测试git commentChar=auto,用于必须出于某些目的模拟git-commit的库。

如果我运行git commit -m "#message",然后进行第二次提交,打开编辑器以编辑消息, 评论仍标有#。这是为什么呢?

根据文档:

core.commentchar

提交和标记等命令,可让您编辑 消息考虑以注释的此字符开头的行, 并在编辑器返回后将其删除(默认 #(。

如果设置为"auto",git-commit 将选择一个不是 现有提交消息中任何行的开头字符。

但是当我运行测试脚本时:

git config --global core.commentChar auto
touch foo
git add foo
git commit -m '#message'
touch bar
git add bar
git commit # opens editor, And I see:
# Please enter the commit message // Wrong! This should not use the # char.

根据 git 存储库中的某些测试,如果它"评论"的消息已经包含注释字符,它仅应用此"自动"方法。 文档中的现有提交消息引用(在这种情况下(修改后的消息(或者在变基压制的情况下,几个提交消息(。

您可以在 commit.c 中看到处理方式:这里

它查看即将显示的当前缓冲区,并选择"#;@!$%^&|:"中的第一个作为潜在的注释字符和其他错误。

当它说"现有的提交消息"时,它并不意味着以前提交的消息;检查所有以前的消息是不切实际的。它表示在调用编辑器之前尚未在当前消息中使用的字符。这似乎是多余的——如果你还没有写消息,为什么它需要检查任何东西?但是有很多方法可以拥有现有消息,包括:

  • 你在做git commit --amend.
  • 您正在执行git merge并且消息已预先填充。
  • 您已设置commit.template配置变量,或者正在使用--template选项git commit

无论如何,core.commentChar = auto的目的是扫描预先存在的消息以查找行首字符,并选择不会冲突的字符。

相关内容

  • 没有找到相关文章

最新更新