尝试创建bash脚本时出现git错误“致命:带有-a的路径没有意义。”

时间:2019-04-22 18:35:45

标签: bash git

我正在尝试创建git脚本,因为如果我忘记了一些东西,我会厌倦工作流程和随之而来的头痛。

我已经看过了

Paths with -a does not make sense for bash function

还有这个

git fatal error Path with a does not make sense

但是它们似乎都不适用于我,因为我的代码确实进行了修改,并且我的变量周围有字符串保护。

我认为这可能是我对bash缺乏了解的产物。

这是我尝试过的,

function push(){
    BR=`branch | grep \* | cut -d ' ' -f2`
    git commit -am "$BR" " $1"
    git push origin "$BR"
}

第一行正在使用我拥有的另一个命令,该命令将git branch缩短为just branch,所以我不需要添加'git'

我还尝试过删除“ $ BR”周围的字符串,只是将其保留为$ BR,这给了我同样的错误。

我的提交错误

致命:带有-a的路径没有意义。

但是我知道我已经修改了已经由git跟踪的文件(通过运行git diff),所以对于为什么显示此文件有些困惑

当我尝试删除“ $ 1”并保持其他所有功能相同时,是否与我的实际提交消息有关?

3 个答案:

答案 0 :(得分:1)

在查看git commitgit help commit)的文档时,添加-m标志时,它期望下一个参数是提交消息。

-m <msg>, --message=<msg>
    Use the given <msg> as the commit message. If multiple -m options are given, their values are concatenated as separate paragraphs.

因此,git commit -am "$BR" " $1"是不正确的,因为它将把您的分支名称解释为提交消息,然后将所有剩余的args解释为某个路径说明符。

尝试以下方法:

function push(){
    local br=`branch | grep \* | cut -d ' ' -f2`
    git commit -a "$br" -m "$1"
    git push origin "$br"
}

答案 1 :(得分:1)

您要将分支名称指定为提交消息,并将提交消息指定为文件名。 Git对您说“提交所有文件但仅提交此文件”这一事实做出了反应。

如果要同时指定分支名称和消息作为提交消息,则必须将它们作为单个参数传递:

mandelbrotCoord

答案 2 :(得分:0)

提交消息只是一个参数,因此请尝试以下操作:

git commit -am "$BR $1"