рüф*_*ффп 17 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'
Run Code Online (Sandbox Code Playgroud)
现在我想要一个类似的别名:
alias.sl = showlog --abbrev-commit
Run Code Online (Sandbox Code Playgroud)
当我尝试命令时,git sl它说他不知道showlog命令.
我知道仍然可以像其他别名一样复制相同的命令,但我只是想知道是否有可能在别名中引用另一个别名?
tor*_*rek 22
不是那样,但你可以让别名通过shell运行命令,因此运行另一个实例git来解析第二个别名:
alias.sl = !git showlog --abbrev-commit
Run Code Online (Sandbox Code Playgroud)
2018年第4季度更新:是的,Git 2.20有可能:到目前为止,禁止将别名扩展为另一个别名,但是现在允许创建这样的别名。
参见Tim Schumacher()提交的commit fef5f7f,commit 82f71d9和commit c6d75bc(2018年9月16日)。(由Junio C Hamano合并--在mit 506ee60中,2018年10月16日)timschumi
gitster
alias:添加对别名别名的支持别名只能包含非别名git命令及其参数,不能包含其他用户定义的别名。通过在处理第一个别名之后中断循环,可以防止解析其他(嵌套的)别名。
然后,Git失败,并显示一个命令未找到的错误。通过在
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
Run Code Online (Sandbox Code Playgroud)
那将是一个git status。