Неверное имя переменной в Bash из псевдонима Git

У меня есть следующий псевдоним Git в моей глобальной конфигурации git.

pushnew = !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push --set-upstream origin $tmp_branch; unset $tmp_branch; }; f

При запуске я получаю следующий вывод:

 * [new branch]      bug/graphs -> bug/graphs
Branch bug/graphs set up to track remote branch bug/graphs from origin.
f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push --set-upstream origin $tmp_branch; unset $tmp_branch; }; f: 1: unset: bug/graphs: bad variable name

Я видел этот вопрос, но если это решение, то как мне применить исправление в контексте псевдонима Git?


person bcmcfc    schedule 01.05.2015    source источник
comment
Я думаю, в этом контексте это не будет слишком проблематично, но вы всегда должны указывать свои переменные оболочки, например. git push --set-upstream origin "$tmp_branch". Это предотвращает разбиение слов, когда внутри значения переменной есть пробелы, и расширение подстановки, когда есть такие символы, как *.   -  person Tom Fenech    schedule 01.05.2015
comment
Если вы хотите узнать имя текущей ветки, вам не нужно grepпинговать вывод из git branch. Вы хотите использовать git symbolic-ref HEAD (возможно, и с аргументом --short). См. stackoverflow.com/questions/1593051/ .   -  person Etan Reisner    schedule 01.05.2015
comment
Том, Итан: спасибо за эти предложения - обязательно улучшим его и помогу с будущим обслуживанием.   -  person bcmcfc    schedule 01.05.2015
comment
Нет реальной необходимости сбрасывать tmp_branch, поскольку он определен в подоболочке, созданной Git для оценки псевдонима. Также нет необходимости экспортировать его; вы расширяете его только в той же оболочке, где он определен, а не в дочернем процессе. f() { git push --set-upstream origin "$(git symbolic-ref HEAD)"; } должно хватить.   -  person chepner    schedule 01.05.2015


Ответы (1)


Так должно быть:

unset tmp_branch

Если вы попытаетесь сбросить $tmp_branch, оболочка подставит значение $tmp_branch, пытаясь сбросить bug/graphs.

person VonC    schedule 01.05.2015