Git псевдоним с расширениями переменных оболочки - PullRequest
4 голосов
/ 29 ноября 2011

Я бы хотел использовать расширение переменной оболочки внутри псевдонима git, чтобы убрать префикс ветви. К сожалению, когда я использую «стандартный» псевдоним, расширение переменной не выполняется:

publish = push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}

Это попытка выдвинуть ветку с именем $ {$ (git). Но если я изменю псевдоним на:

publish = "!git push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}"

он запускается через sh и не может выполнить замену, которую я хочу. Есть ли обходной путь?

Ответы [ 2 ]

1 голос
/ 04 января 2012

Объяснение низкого уровня: для синтаксиса ${xxx} всегда требуется имя переменной для xxx. Он не заменяет произвольную строку. Чтобы использовать ##, нужно: x=$(git symbolic-ref HEAD); echo ${x##refs/heads/};

1 голос
/ 29 ноября 2011

Попробуйте изменить

!git push -u origin ${$(git symbolic-ref HEAD)##refs/heads/}

на

!git push -u origin `git symbolic-ref HEAD | sed -e "s#^refs/heads/##"`

При этом используются sh кавычки для выполнения команд и sed для замены регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...