Git:是否可以在.gitconfig中引用.gitconfig中的变量?

问题描述 投票:1回答:1

是否可以在.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 resultgit log-res相同,但是阅读起来很恐怖,不是吗?

git variables git-config
1个回答
0
投票

否,无法在.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,这是行不通的。

© www.soinside.com 2019 - 2024. All rights reserved.