首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git core.commentChar=auto是做什么的?

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

Stack Overflow用户
提问于 2017-07-25 03:07:28
回答 2查看 1.4K关注 0票数 0

我正在用git commentChar=autogit-commit测试一个库,这个库必须为了某些目的而模仿git-commit

如果我运行git commit -m "#message",然后再提交一个打开编辑器来编辑消息的提交,那么注释仍然会被标记为#。为什么会这样呢?

根据文档

core.commentChar 允许编辑消息的命令(如commit和tag )考虑以此字符注释开始的行,并在编辑器返回后删除它们(默认#)。 如果设置为“自动”,git-commit将选择一个字符,该字符不是现有提交消息中任何行的起始字符。

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

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-25 03:24:42

在git回购中的一些测试中,只有当它正在“注释”的消息已经包含了注释字符时,它才会应用这种“自动”方法。文档中的现有提交消息引用(在本例中)修改后的消息(或者在重基的情况下--压缩几个提交消息)。

您可以看到在commit.c这里中处理这个问题的方式。

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

票数 3
EN

Stack Overflow用户

发布于 2017-07-25 03:30:57

当它说“现有提交消息”时,并不意味着以前提交的消息;检查所有以前的消息是不切实际的。它意味着在调用编辑器之前,当前消息中尚未使用的字符。这看起来可能是多余的--如果你还没有写这条消息,它为什么要检查任何东西呢?但是,有很多方法可以获得现有的信息,包括:

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

无论在何种情况下,core.commentChar = auto的目的都是扫描预先存在的消息,寻找行开始字符,并选择一个不会冲突的字符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45293231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档