我正在使用git commentChar=auto
为git-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.
答案 0 :(得分:3)
从some tests in the git repo开始,只有当“评论”的消息已包含评论字符时,它才会应用此“自动”方法。文档中的现有提交消息引用(在这种情况下)修改后的消息(或者在rebase-squash几个提交消息的情况下)。
中查看处理方式它查看即将显示的当前缓冲区,并选择"#;@!$%^&|:"
中的第一个作为潜在注释字符和其他错误。
答案 1 :(得分:2)
当它显示“现有提交消息”时,它并不意味着之前提交的消息;检查所有以前的消息是不切实际的。它表示在调用编辑器之前,当前消息中尚未使用的字符。这似乎是多余的 - 如果你还没有写过消息,为什么还需要检查一下?但是有很多方法可以获得现有消息,包括:
git commit --amend
。git merge
并且邮件已预先填充。commit.template
配置变量或正在使用--template
的{{1}}选项。无论如何,git commit
的目的是扫描预先存在的消息以寻找行首字符,并选择一个不会发生冲突的消息。