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

Git:是否可以在.gitconfig中引用.gitconfig中的变量?,git,variables,git-config,Git,Variables,Git Config,是否可以在.gitconfig的另一个定义中使用.gitconfig中的变量 在bash中,我可以做到: delimiter="^" log_res="log --graph --pretty=format:'$delimiter%cr$delimiter%cs$delimiter%h'" 结果是什么 log --graph --pretty=format:'^%cr^%cs^%h' 在.gitconfig中是否也可以实现结果别名 [alias] result = log

是否可以在.gitconfig的另一个定义中使用.gitconfig中的变量

在bash中,我可以做到:

delimiter="^"
log_res="log --graph --pretty=format:'$delimiter%cr$delimiter%cs$delimiter%h'"
结果是什么

log --graph --pretty=format:'^%cr^%cs^%h'
在.gitconfig中是否也可以实现结果别名

[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"

您可能希望将该值存储在
别名
部分之外的其他位置,这样您的shell补全就不会试图完成
git delimiter
,这是行不通的。

存储
delimiter
的正确或更好的部分是什么?您喜欢的任何内容。您可以创建所需的任何密钥,包括自定义密钥。您可以执行类似于
log.delimiter
的操作,或者以您的姓名首字母或句柄命名的键,或者几乎任何其他操作。