如何在.gitconfig中创建临时变量?
有时,我在别名的参数列表中有一个长and字符串;例如,diff highlight的完整路径,或者一个非常长且令人困惑的漂亮格式字符串 我想将这些字符串放在一个临时变量中,这样我就可以执行如下操作,我发现这比内联可读得多:如何在.gitconfig中创建临时变量?,git,Git,有时,我在别名的参数列表中有一个长and字符串;例如,diff highlight的完整路径,或者一个非常长且令人困惑的漂亮格式字符串 我想将这些字符串放在一个临时变量中,这样我就可以执行如下操作,我发现这比内联可读得多: [alias] FMT_OF_DEATH="somethinghideouslylongandunreadable" hist = log --pretty=format:$FMT_OF_DEATH --graph --date=short 我可以这样做吗?
[alias]
FMT_OF_DEATH="somethinghideouslylongandunreadable"
hist = log --pretty=format:$FMT_OF_DEATH --graph --date=short
我可以这样做吗?如果可以,怎么做?[p>[Edit]请参见下面的详细信息,但事实证明,对于-pretty=format,它早在Git版本1.7.10中就已经内置了 给定-pretty=format:name,git log将在[format]部分查找该名称。因此,您只需要运行git log-pretty=format:death-graph-date=short,将您的死亡格式设置为format.death。名称也会递归展开,因此您可以在配置中指定format.death=format.death1 format.death2,format.death1和format.death2将展开为%。。。指令和任何您喜欢的文字字符串 但是,对于那些不是格式化字符串的东西,您仍然必须以艰难的方式来完成 艰难的道路 为此,您必须调用shell并让shell调用git config-get或等效程序来扩展内部部分。因此,您需要小心外壳是否也会扩展任何外部部件。幸运的是,有了Git,很多东西都不会被吃掉。对于其他工作类似的程序来说,情况并非总是如此。因此,继续使用格式思想,您可能希望其他命令有所不同:
[format]
death = somethinghideouslylongandunreadable
[alias]
hist = !git log "--pretty=format:"\"$(git config --get format.death)\" \
--graph --date=short
请注意,这可能更灵活,因为您可以对任意多的致命格式进行预编码,然后使用命令行参数选择一种格式。但是,此时别名本身变得非常复杂,您可能只想将其作为shell脚本编写,您可以使用git sh setup及其各种功能:
[format]
death1 = ...
death2 = ...
加上:
在$PATH中的某个地方使用这个脚本,您可以运行git hist foo以获得format.foo格式的输出。您可以使用git hist foo-date=long zorg覆盖-date和log from分支zorg,以此类推
但既然它都是内置的,你最好用简单的方法来做
#! /bin/sh
# git-hist: run git log with --pretty=format:<fmt> where <fmt>
# is extracted via "git config --get format.whatever", where
# the "whatever" part is an argument
USAGE="which-format [args passed through to git log]"
. git-sh-setup
case $# in
0) usage;;
*) fmt=$(git config --get format."$1") ||
die "hist: no \"format.$1\" found (check git configuration)"
shift;;
esac
exec git log --pretty=format:"$fmt" --graph --date=short "$@"