在Git中,可以从另一个别名引用别名

时间:2014-02-27 11:54:15

标签: git alias git-config

假设我的.gitconfig中有一个这样的别名:

alias.showlog = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' 

现在我想要一个类似的别名:

alias.sl = showlog --abbrev-commit

当我尝试命令git sl时,它说他不知道showlog命令。

我知道仍然可以像其他别名一样复制相同的命令,但我只是想知道是否有可能在别名中引用另一个别名?

2 个答案:

答案 0 :(得分:18)

不是这样,但你可以让别名通过shell运行命令,因此运行另一个git实例来解析第二个别名:

alias.sl = !git showlog --abbrev-commit

答案 1 :(得分:6)

2018年第4季度更新:是的,Git 2.20可能是这样的:到目前为止,禁止将别名扩展为另一个别名,但是现在允许创建这样的别名。

请参见commit fef5f7fcommit 82f71d9commit c6d75bcTim Schumacher (timschumi)(2018年9月16日)。
(由Junio C Hamano -- gitster --commit 506ee60中合并,2018年10月16日)

  

put:添加对别名别名的支持

     

别名只能包含非别名git命令及其参数,不能包含其他用户定义的别名。通过处理第一个别名后中断循环,可以防止解析其他(嵌套)别名。
  然后,Git失败,并显示一个命令未找到的错误。

     

在处理第一个别名之后,不要破坏alias中的循环,从而解决嵌套别名。
  而是继续循环,直到run_argv()失败为止,这意味着没有循环   可以处理的其他别名。通过将替换的命令存储在handle_alias()中并检查命令是否先前被替换来防止循环别名。

所以...现在将有可能:

cmd_list

那将是git config alias.nested-internal-1 nested-internal-2 git config alias.nested-internal-2 status git nested-internal-1