代码之家  ›  专栏  ›  技术社区  ›  sf8193

尝试创建bash脚本“fatal:paths with-a没有意义”时出现git错误。

  •  0
  • sf8193  · 技术社区  · 6 年前

    我正试图创建一个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分支缩短为仅分支,所以我不需要添加“git”

    我还试过删除“$br”周围的字符串,并将其保留为$br,这会导致相同的错误。

    我犯了个错误,上面写着

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

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

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

    0 回复  |  直到 6 年前
        1
  •  1
  •   that other guy    6 年前

    将分支名称指定为提交消息,将提交消息指定为文件名。git对您所说的“提交所有文件,但仅提交此文件”做出了反应。

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

    git commit -am "$BR $1"
    
        2
  •  1
  •   0x5453 Yuki    6 年前

    查看文档 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"
    }
    
    推荐文章