Ошибка git при попытке создать bash-скрипт "fatal: Пути с -a не имеют смысла". - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь создать git-скрипт, потому что мне надоели рабочие процессы и головные боли, которые возникают, если я что-то забываю.

Я смотрел на это

Пути с -a не имеют смысла для функции bash

и это

gat fatal error Путь с не имеет смысла

но ни один из них, кажется, не применим ко мне, так как мой код изменил изменения, и у меня есть строковая защита вокруг моей переменной.

Я думаю, что это может быть результатом моего незнания 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» и оставить все остальное таким же, он работает, так что я думаю, что это связано с моим фактическим сообщением о коммите?

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Вы указываете имя ветви как сообщение о коммите, а сообщение о коммите - как имя файла.Git реагирует на тот факт, что вы говорите «Зафиксировать все файлы, но только этот файл».

Если вы хотите указать как имя ветки, так и ваше сообщение в качестве сообщения фиксации, вы должны передать их какодин аргумент:

git commit -am "$BR $1"
1 голос
/ 22 апреля 2019

Глядя на документы для 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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...