繁体   English   中英

Git shell 命令别名给出“错误的配置文件”错误

[英]Git shell command alias giving a "bad config file" error

我正在处理以下 git 别名

[alias]
  pushup = !git push --set-upstream origin `git branch | egrep "^\*" | awk -F"*" '{print $NF}'`

它应该在将上游设置为当前分支的同时执行 git push 。

命令

git push --set-upstream origin `git branch | egrep "^\*" | awk -F"*" '{print $NF}'`

在命令行上可以正常工作,但是当我尝试将其用作 git 别名时,出现错误的配置文件错误。

显然,我对 git 别名的格式一无所知。 有谁想开导我吗?

我不确定出了什么问题,但以下简化的别名对我有用:

[alias]
    pushup = !git push --set-upstream origin $(git branch | awk '/^*/{print $2}')

您可以依靠awk对空格的分割来自动获取分支名称作为第二个字段,而不是 grepping *然后对其进行拆分,并使用awk do grep的工作。

Vim 将\\*高亮显示为一个错误,当我尝试使用它时,我得到了你得到的错误(我使用echo进行调试:D):

在此处输入图片说明

所以这就是错误的原因。 我仍然不知道为什么

我想你也可以使用这个 SO post 中更简单的命令:

[alias]
    pushup = !git push --set-upstream origin $(git rev-parse --abbrev-ref HEAD)

错误的原因是\\在解析别名时被识别为转义字符。 解析器期望在\\之后需要转义的东西,但星号不符合要求。

你应该逃避\\与第二反斜线使解析器高兴,他传到egrep 像这样:

[alias]
  pushup = !git push --set-upstream origin `git branch | egrep "^\\*" | awk -F"*" '{print $NF}'`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM