是否可以在.gitconfig中的另一个定义中使用来自.gitconfig的变量?
在bash中我可以做:
delimiter="^"
log_res="log --graph --pretty=format:'$delimiter%cr$delimiter%cs$delimiter%h'"
产生的结果
log --graph --pretty=format:'^%cr^%cs^%h'
。gitconfig中实现result别名的可能相同吗?
[alias]
result = log --graph --pretty=format:'^%cr^%cs^%h'
delimiter = "^"
log-res = ??? log --graph --pretty=format:'DELIMITER%crDELIMITER%csDELIMITER%h' ???
我该如何写'log-res'来接管分隔符的更改?可以很好地完成吗?
我知道我可以做这样的事情,如果您定义了许多日志命令,这是很丑的:
[alias]
result = log --graph --pretty=format:'^%cr^%cs^%h'
delimiter = "^"
log-res = !bash -c '"git $(echo \"log --decorate=short --graph --pretty=format:'$(git config alias.delimiter)%cr$(git config alias.delimiter)%cs$(git config alias.delimiter)%h'\")"'
git result
与git log-res
相同,但是阅读起来很恐怖,不是吗?
否,无法在.gitconfig
中引用其他设置。通常,由于继承规则,这将很棘手:如果在repo本地配置中更改了值,那么全局配置中的别名会使用全局配置中的版本还是repo本地配置中的版本?
您已经注意到,您确实可以使用sh
来做到这一点,但这可能会更简单一些:
log-res = "!f() { d=\"$(git config alias.delimiter)\"; git log --graph --pretty=\"format:$d%cr$d%cs$d%h\" \"$@\"; };f"
您可能希望将值存储在alias
部分下的其他位置,以便您的Shell补全不会尝试完成git delimiter
,这是行不通的。