3

问题

我很想知道是否可以创建一个别名来在 Git 中创建别名,即元别名,这样就不用键入git config --global alias.-whatever one can just write git alias-whatever。

背景:

  1. 我只是对 Bash 和 Git 感兴趣,并且最近开始创建别名,例如git cfgforgit config --global和,从此页面git hist用于:

    git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
    
  2. 最后一个示例是通过键入以下内容设置的:

    git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'
    
  3. 使用我的git cfg别名,我可以将其缩短为:

    git cfg alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'
    

但我试图弄清楚我是否可以进一步缩短它,所以这git cfg alias.只是git alias部分出于方便,部分出于好奇,部分出于希望了解更多关于 Git 和 Bash 的一般信息。

尝试的解决方案?:

  1. 我发现我可以调用git $(echo 'cfg')并获得与git cfg.

  2. alias所以我尝试通过输入以下内容来创建别名:

    git cfg alias.alias '$(echo "config --global alias.")'
    

    希望我可以输入类似git alias st statusgit st.git status

  3. 不幸的是,这似乎不起作用,因为此时 Git 不再将其识别$(echo为命令,即使它在别名的上下文之外工作,如git $(echo 'cfg'). 我也不确定这样的事情是否会起作用,因为st示例中的 必须直接附加到alias.执行的回显中。

有没有人对如何使这成为可能有任何建议?

4

1 回答 1

2

来自git wiki

Now that you know all about aliases, it might be handy to define some, using an alias:

    [alias]
            alias = "!sh -c '[ $# = 2 ] && git config --global alias.\"$1\" \"$2\" && exit 0 || echo \"usage: git alias <new alias> <original command>\" >&2 && exit 1' -"

then define new aliases with:

    $ git alias new_alias original_command

该表达式[ $# = 2 ]是一个 shell 表达式,如果参数的数量等于 2,则该表达式为真。

结构如下:

not <shell cmd> AND exit 0 OR <display syntax> AND exit 1

哪个是shell语言,如果参数个数是两个,并且git返回成功,则返回成功(0)。否则,打印语法错误消息,并返回失败 (1)。

于 2013-05-05T13:22:46.773 回答