git core.commentChar = auto做什么?

时间:2017-07-25 03:07:28

标签: git git-commit

我正在使用git commentChar=autogit-commit测试一个必须为某些目的模拟git-commit的库。

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

根据docs

  

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.

2 个答案:

答案 0 :(得分:3)

some tests in the git repo开始,只有当“评论”的消息已包含评论字符时,它才会应用此“自动”方法。文档中的现有提交消息引用(在这种情况下)修改后的消息(或者在rebase-squash几个提交消息的情况下)。

您可以在commit.chere

中查看处理方式

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

答案 1 :(得分:2)

当它显示“现有提交消息”时,它并不意味着之前提交的消息;检查所有以前的消息是不切实际的。它表示在调用编辑器之前,当前消息中尚未使用的字符。这似乎是多余的 - 如果你还没有写过消息,为什么还需要检查一下?但是有很多方法可以获得现有消息,包括:

  • 你正在做git commit --amend
  • 您正在进行git merge并且邮件已预先填充。
  • 您已设置commit.template配置变量或正在使用--template的{​​{1}}选项。

无论如何,git commit的目的是扫描预先存在的消息以寻找行首字符,并选择一个不会发生冲突的消息。