将 git stuck 选项连同引号原封不动地传递给脚本

将 git stuck 选项连同引号原封不动地传递给脚本

我正在尝试编写一个将被称为 git 别名的脚本。

该脚本是一个包装器git merge,因此当我在脚本中调用它时,我想将其所有参数按git merge原样传递给它。

别名设置如下:

git config alias.my-merge-wrapper  '!f(){ path/to/script.sh $@; }; f'

我的第一次尝试是这样的:

#!/bin/sh
git merge "$@"

遗憾的是,这不适用于卡住选项(见这里):

例如,如果我像这样调用我的脚本:

git my-merge-wrapper -m"message (b2 into b1)"

它失败了,因为git merge它被这样调用:

git merge -mmessage (b2 into b1)

所以我明白了merge: (b2 - not something we can merge

我也尝试使用$*别名和脚本,但没有成功。

有没有什么办法可以解决这个问题?

答案1

$@解决方案是在别名中也引用:

git config alias.my-merge-wrapper  '!f(){ path/to/script.sh "$@"; }; f'

然后 git stuck 选项的简称和它引用的参数被分组为一个独特的 shell 脚本参数(就好像它是一样'-mmessage (b2 into b1)'),但 git 可以毫无问题地支持它。

相关内容