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

问题描述

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

我看过这个

带有 -a 的路径对 bash 函数没有意义

和这个

git 致命错误 带有 a 的路径没有意义

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

我认为这可能是我对 bash 不熟悉的产物。

这是我试过的

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

第一行是使用另一个命令将 git branch 缩短为分支,所以我不需要添加 'git'

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

我收到一个错误的提交,上面写着

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

但我知道我已经修改了 git 已经跟踪的文件(通过运行 git diff)所以我有点困惑为什么会出现

当我尝试删除“ $1”并保持其他所有内容相同时,它可以工作,所以我认为这与我的实际提交消息有关?

标签: bashgit

解决方案


查看git commit( git 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"这是不正确的,因为它会将您的分支名称解释为提交消息,然后将所有剩余的参数解释为某个路径说明符。

试试这个:

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

推荐阅读