Git 别名多个命令带有 ;和 &&

Git 别名多个命令带有 ;和 &&

我想要一个执行命令的别名,然后无论它是否失败,它都会执行其他命令,这取决于彼此的成功。

所以我在 .gitconfig 中有类似的东西

getpull = !sh -c 'git remote add $0 $1; git fetch $0 && git checkout -b $2 $0/$2'

使用该命令,我收到以下错误(我不知道,因为当我将其复制到 shell 时它工作正常):

sh -c 'git remote add $0 $1: 1: sh -c 'git remote add $0 $1: Syntax     error: Unterminated quoted string

答案1

我发现了,这似乎与 .gitconfig 解析器有关,要解决它,我们只需要用双引号将整个命令括起来,如下所示

"!sh -c 'git remote add $0 $1; git fetch $0 && git checkout -b $2 $0/$2'"

答案2

分号;开始一条注释,该注释会提前终止您的 Git 别名,从而在 Git 尝试运行您指定别名的外部 shell 命令时使其不完整。

该命令的手册页git-config指出,;分号开始一个注释,一直延伸到行尾,因为 Git 配置文件是以 INI 格式编写的。

相关内容