在 git 中回显任意参数

echo arbitrary arguments in git

我在别名中链接了一堆 git 命令,如下所示。如何让 'echo' 部分工作:

[alias]
        comb = ! sh -c 'echo \"Combining branches  with \"' && git checkout  && git merge  && git push && git checkout  && :

一些背景: Git Alias - Multiple Commands and Parameters

你的报价搞砸了:

        comb = ! sh -c 'echo "Combining branches  with " && git checkout "" && git merge "" && git push && git checkout ""'

您还可以考虑将别名更改为名为 git-comb 的可执行文件,并将其存储在路径中的某个位置:

$ cat /path/to/executables/git-comb
#!/bin/sh
if [ "$#" -ne 2 ]
then
  >&2 printf 'Usage: %s <ref> <ref>\n" "${0##*/}"
  exit 2
fi
echo "Combining branches  with "
git checkout ""
git merge ""
git push
git checkout ""

这样你可以调用它:

$ git comb branch_1 branch_2

标准技巧是定义一个您立即调用的函数。

[alias]
        comb = ! f () { echo "Combining branches  with " && git checkout "" && git merge "" && git push && git checkout "" && :; } f

这简化了引用。

不要在 echo 周围使用单引号 — Unix shell 不会在单引号内展开参数。修复是

$ git config alias.comb '! sh -c "echo \"Combining branches  with \""'
$ git config alias.comb 
! sh -c "echo \"Combining branches  with \""

示例:

$ git comb 1 2 3                
Combining branches 1 with 2

或者

$ git config alias.comb '! sh -c "echo \"Combining branches $*\""'
$ git config alias.comb         
! sh -c "echo \"Combining branches $*\""
$ git comb 1 2 3                
Combining branches 1 2 3