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