使用hashmark(#)启动git commit消息

时间:2010-05-07 11:19:38

标签: git commit ticket-system ticket-tracking

Git在提交时将以#开头的行视为注释行。在使用故障单跟踪系统并尝试在该行的开头写入故障单号时,这非常烦人,例如

#123 salt hashed passwords

git只会从提交消息中删除该行。有没有办法逃避哈希?我尝试了\!,但没有任何效果。保留#之前的空格,因此它们也不是解决问题的有效方法。

9 个答案:

答案 0 :(得分:199)

此行为是git commit默认“清理”行为的一部分。如果您想保留以#开头的行,您可以使用其他清理模式。

E.g。

git commit --cleanup=whitespace

如果你这样做,你必须小心删除你不想在提交中出现的所有#行。

答案 1 :(得分:117)

请注意,自git1.8.2 (February 2013)起,您可以在提交邮件中为注释行使用与“#”不同的字符。

这允许您使用“#”作为错误编号参考。

  

当Git要求用户在编辑器中编辑消息时,默认情况下会使用“#”注释掉各种“提示”行。

     

core.commentChar 配置变量可用于将此“#”自定义为其他角色。


理论上,你可以放一个core.commentChar字(多个字符),但git 2.0.x / 2.1会更严格(2014年第三季度)。

commit 50b54fdNguyễn Thái Ngọc Duy (pclouds)

config:对core.commentChar

严格要求
  

我们不支持评论字符串(至少尚未支持)。多字节字符编码也可能被误解。

     

使用两个逗号的测试会更新,因为它违反了此规则。它添加了introduces core.commentChar in eff80a9的补丁(允许自定义“评论字符” - 2013-01-16)。我不清楚为什么需要这种行为。


git 2.0.x / 2.1(2014年第3季度)将为core.commentChar添加自动选择:
commit 84c9dc2

  

core.commentChar为“auto”时,注释字符串默认为“#”,但如果它已经在准备好的消息中,则在一个小子集中找到另一个字符。这应该可以避免意外,因为git意外地剥离了一些行。

     

请注意,git不够智能,无法将“#”识别为自定义模板中的注释字符,如果最终注释字符不同,则将其转换为。   它将自定义模板中的“#”行视为提交消息的一部分。所以不要将它与自定义模板一起使用。

“auto”的候选字符列表为:

# ; @ ! $ % ^ & | :

这意味着像git commit -m '#1 fixed issue'这样的命令会自动将commentChar切换为“;”,因为在提交消息中使用了“#”。

答案 2 :(得分:67)

这里的答案很好而且详细,但对于像我这样的git noob定制git配置选项并不是那么明显。以下是针对评论字符从#更改为;的示例:

git config core.commentChar ";"

这就是你需要做的一切。

答案 3 :(得分:59)

您可以使用命令行选项-m

git commit -m "#123 fixed"

答案 4 :(得分:29)

如果您正在进行交互式rebase,那么当您保存提交消息时没有任何内容(因为开头的#已将其作为注释而因此被忽略)git将向您显示要做:

Aborting commit due to empty commit message.
Could not amend commit after successfully picking 5e9159d9ce3a5c3c87a4fb7932fda4e53c7891db... 123 salt hashed passwords
This is most likely due to an empty commit message, or the pre-commit hook
failed. If the pre-commit hook failed, you may need to resolve the issue before
you are able to reword the commit.
You can amend the commit now, with

        git commit --amend

Once you are satisfied with your changes, run

        git rebase --continue

所以,只需修改消息:

git commit --amend -m "#123 salt hashed passwords"

继续改变:

git rebase --continue

答案 5 :(得分:21)

应该使用

if [ "$value" == 1 ]; then 。它已于2014.05.21

添加到Git v2.0.0

来自git commit --cleanup=scissors

git commit --help

答案 6 :(得分:3)

为票号使用不同的前缀。或者在单词前面添加一个单词,例如“Bug#42”。或者在行前加一个空格字符;如果你想删除那个空格,可以为它添加一个commit-hook。

我个人不希望钩子完成这种提交消息操作,因为当你不想要它时它会触发它会非常恼人。最简单的解决方案可能是重新思考问题。

答案 7 :(得分:1)

我的所有提交都以#issueNumber开头,所以我将此样板文件放到我的vim .git/hooks/commit-msg

NAME=$(git branch | grep '*' | sed 's/* //') 
echo "$NAME"' '$(cat "$1") > "$1"

因此,我们假设我们有分支#15,并且我们提交了提交消息add new awesome feature。使用此方法,最终提交消息将为#15 add new awesome feature

答案 8 :(得分:-1)

字符之前使用空格字符 # 开始提交消息就足够了。

然后 git 停止将该行视为注释,github 可以毫无问题地使用经过哈希处理的票号。

vim 的默认语法突出显示甚至通过将颜色从 commentish 更改为 contentish 来建议该功能。

enter image description here