如何处理 git 别名的组合
How to deal with combinations of git aliases
问题
我在 .gitconfig 中定义了三个 git 别名(使用外部 bash 脚本定义了一个名为 diff-lines 的函数):
[alias]
diffc = diff --cached
diffnw = diff -w --ignore-cr-at-eol --ignore-all-space
diffln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diff | diff-lines'
如何定义 'diffln' 以便与其他别名结合使用?
我正在寻找一些东西来防止我必须定义类似于以下内容的每个版本:
diffcln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diffc | diff-lines'
diffnwln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diffnw | diff-lines'
diffcnwln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diffnw --cached | diff-lines'
etc...
之前的尝试
我试过这个:
diffln =!bash -c 'source $HOME/.bash_functions/diff-lines && git $@ | diff-lines'
并通过以下方式调用:
$ git diffln diffc
但它只是给了我默认的 git 选项,就好像我只是在调用 $ git
在它后面加一个东西。通常:bash -c "blabla" _
或 bash -c "balbla" --
.
bash -c "" <here>
之后的第一个参数是 [=15=]
- 第二个 参数是 </code>.</p>
<p>还要记住引号 - 将 <code>$anything
放在双引号内以防止分词和文件名扩展。但我不确定 git 是如何处理的。
diffln =!bash -c 'source "$HOME/.bash_functions/diff-lines" && git "$@" | diff-lines' _
如果你想要一个“默认”参数,你可以:
diffln =!bash -c 'source "$HOME/.bash_functions/diff-lines" && if ((!$#)); then set -- diff; fi && git "$@" | diff-lines' _
问题
我在 .gitconfig 中定义了三个 git 别名(使用外部 bash 脚本定义了一个名为 diff-lines 的函数):
[alias]
diffc = diff --cached
diffnw = diff -w --ignore-cr-at-eol --ignore-all-space
diffln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diff | diff-lines'
如何定义 'diffln' 以便与其他别名结合使用?
我正在寻找一些东西来防止我必须定义类似于以下内容的每个版本:
diffcln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diffc | diff-lines'
diffnwln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diffnw | diff-lines'
diffcnwln =!bash -c 'source $HOME/.bash_functions/diff-lines && git diffnw --cached | diff-lines'
etc...
之前的尝试
我试过这个:
diffln =!bash -c 'source $HOME/.bash_functions/diff-lines && git $@ | diff-lines'
并通过以下方式调用:
$ git diffln diffc
但它只是给了我默认的 git 选项,就好像我只是在调用 $ git
在它后面加一个东西。通常:bash -c "blabla" _
或 bash -c "balbla" --
.
bash -c "" <here>
之后的第一个参数是 [=15=]
- 第二个 参数是 </code>.</p>
<p>还要记住引号 - 将 <code>$anything
放在双引号内以防止分词和文件名扩展。但我不确定 git 是如何处理的。
diffln =!bash -c 'source "$HOME/.bash_functions/diff-lines" && git "$@" | diff-lines' _
如果你想要一个“默认”参数,你可以:
diffln =!bash -c 'source "$HOME/.bash_functions/diff-lines" && if ((!$#)); then set -- diff; fi && git "$@" | diff-lines' _