使用管道命令时,Git别名会返回错误

时间:2017-10-02 15:32:12

标签: git shell terminal alias

我正在使用git-ftp而我正在尝试执行 awk 以仅包含第一行:

git ftp show | awk 'NR<7'

它在终端中运作完美。但是,将其作为别名执行会返回错误。

这就是我的git配置文件的样子:

[alias]
sh = ftp show | awk 'NR<7'

如果我运行git sh,则会返回:致命:无法识别的选项:awk

我也尝试过使用show,但它也会返回错误:

[alias]
sh = show | awk 'NR<7'

致命:含糊不清的论点&#39; |&#39;:未知的修订版或路径不在工作树中。

可以通过某种方式编写此命令以使其作为git别名工作吗?

1 个答案:

答案 0 :(得分:0)

首先要注意的是,git别名仅在以bang(感叹号)开头的情况下与shell命令一起使用。 我没有使用git-ftp,所以无法测试您的精确命令,但我改用git remote show origin,因为它在我的存储库中非常冗长。 我发现以下git别名可以正常工作:sh = "!git remote show origin | awk 'NR<7'" 因此,我希望这个git别名为您提供解决方案:

sh = "!git ftp show | awk 'NR<7'"

意识到某些爆炸/竖起/引号组合可以用作git别名,而另一些组合则可能会失败,可能是因为“致命的错误配置行”。 最常见的真正问题是如何使用引号。诀窍可以是仅更改您的特定git别名shell命令行以消除或更改引用用法。 例如,我对git别名有一个要求,我通过将sed命令更改为tr来解决引用问题。然后,我不得不使用...| tr \\\\n来加倍转义反斜杠。

对于这个特定问题,尽管我认为git-alias的引号不存在问题,但是更安全的报价解决方案是:

sh = ! git ftp show | head -6

尽管大多数读者可能已经知道需要大声疾呼,但他们可能没有意识到引用是一个更困难的问题。 尽管并非完全正确,但我发现本文对提出建议很有用:https://www.atlassian.com/blog/git/advanced-git-aliases