【问题标题】:using hex color code in git log and gitconfig alias在 git log 和 gitconfig 别名中使用十六进制颜色代码
【发布时间】:2015-12-05 23:05:27
【问题描述】:

this 回复关于 git log 格式的十六进制颜色代码的启发,我尝试做同样的事情。在终端中直接使用它,它工作正常:

$git log --format="%h%C(#ff69b4)%d%C(reset) %s"|head -1
dc814e3 (HEAD -> master, origin/master, origin/HEAD) Compilation help added

如果我在.gitconfig 的别名中添​​加log --format="%h%C(#ff69b4)%d%C(reset) %s" 部分,则会出现问题:

[alias]
  ll =log --format="%h%C(#ff69b4)%d%C(reset) %s"

给出错误:

$git ll
fatal: ambiguous argument '%s': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

搜索给出了同一类型问题here 的解决方案:建议尝试用\" 转义"

如果我这样做,例如

[alias]
  ll =log --format=\"%h%C(#ff69b4)%d%C(reset) %s\"

我得到错误:

git ll
fatal: Bad alias.ll string: unclosed quote

我正在使用:

$echo $TERM; echo $SHELL; git --version
xterm-256color
/bin/bash
git version 2.4.3

我在这里做错了什么?

【问题讨论】:

    标签: git


    【解决方案1】:

    同样的事情发生在我身上。

    这在终端中运行良好:

    git log --format="%h%C(#ff69b4)%d%C(reset) %s"
    

    但不在 .gitconfig

    在 .gitconfig 文件中,我放了这个简单的引号,对我来说效果很好:

    git log --format='"%h%C(#ff69b4)%d%C(reset) %s"'
    

    在我看来,这种行为会根据您的系统而改变。 您必须进行试验才能在您的系统上获得正确的组合。

    【讨论】:

      【解决方案2】:

      要完成Roman's的回答,问题实际上在于别名需要正确括在引号中:

      我们有什么:

      ll =log --format=\"%h%C(#ff69b4)%d%C(reset) %s\"
      

      我们需要什么:

      ll ="log --format=\"%h%C(#ff69b4)%d%C(reset) %s\""
          ^                                            ^
      

      就这么简单!

      【讨论】:

        【解决方案3】:

        避免手动编辑.gitconfig,直接使用

        git config --global alias.ll 'log --format="%h%C(#ff69b4)%d%C(reset) %s"'
        

        【讨论】:

        • 请注意,如果您使用 ! 闯入 shell,则可能需要转义,因为您的 shell 可能会将其解释为对前一个命令参数的替换请求,任何其他特殊的$ 等字符或使用的附加引号。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        • 2011-01-28
        • 2011-10-25
        • 1970-01-01
        • 2015-04-12
        • 2017-10-01
        相关资源
        最近更新 更多