我正在用git commentChar=auto和git-commit测试一个库,这个库必须为了某些目的而模仿git-commit。
如果我运行git commit -m "#message",然后再提交一个打开编辑器来编辑消息的提交,那么注释仍然会被标记为#。为什么会这样呢?
根据文档
core.commentChar 允许编辑消息的命令(如commit和tag )考虑以此字符注释开始的行,并在编辑器返回后删除它们(默认#)。 如果设置为“自动”,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.发布于 2017-07-25 03:24:42
在在git回购中的一些测试中,只有当它正在“注释”的消息已经包含了注释字符时,它才会应用这种“自动”方法。文档中的现有提交消息引用(在本例中)修改后的消息(或者在重基的情况下--压缩几个提交消息)。
它将查看即将显示的当前缓冲区,并选择"#;@!$%^&|:"的第一个作为潜在的注释字符和其他错误。
发布于 2017-07-25 03:30:57
当它说“现有提交消息”时,并不意味着以前提交的消息;检查所有以前的消息是不切实际的。它意味着在调用编辑器之前,当前消息中尚未使用的字符。这看起来可能是多余的--如果你还没有写这条消息,它为什么要检查任何东西呢?但是,有很多方法可以获得现有的信息,包括:
git commit --amend。git merge,并且消息是预先填充的。commit.template配置变量,或者正在使用--template选项来git commit。无论在何种情况下,core.commentChar = auto的目的都是扫描预先存在的消息,寻找行开始字符,并选择一个不会冲突的字符。
https://stackoverflow.com/questions/45293231
复制相似问题