Получить текущее имя ветки для использования в команде git
Я иногда хочу использовать текущее имя ветки для использования в командах git. Например
git push origin feature/really-long-branch-name
Есть ли команда git, которая даст только название ветки, чтобы я мог сделать что-то вроде следующего?
git push origin current_branch
Существует git rev-parse --abbrev-ref HEAD
, но это точно полезно в этом случае. Установка ветки по умолчанию не так уж полезна, так как имя ветки часто меняется. Изменение поведения по умолчанию git push
не то, что я ищу, так как это все равно означает, что нужно сначала ввести полное имя ветки я push
.
Edit:
Модераторы, этот вопрос не является обманом, поэтому, пожалуйста, не закрывайтесь по этой причине. Пожалуйста, внимательно прочитайте смелую часть моего вопроса.
Ответы
Ответ 1
Прочтите Символическую ссылку HEAD
Существует несколько способов получить имя текущей ветки. Самым каноническим является чтение символического ref для HEAD с использованием git -symbolic-ref (1). Например, если вы находитесь на главной ветке:
$ git symbolic-ref HEAD | sed 's!refs\/heads\/!!'
master
Используя Ref
Однако вы анализируете его, вы можете использовать символическое имя в другой команде, вызывая вашу оболочку замена команд. Например, в Bash:
$ git log -n1 $(git rev-parse --abbrev-ref HEAD)
Нет причин, по которым вы не могли бы использовать этот трюк с помощью push или других команд, если вы выберете.
Push.Default
Если вы заинтересованы только в том, чтобы отодвинуть текущую ветку к удаленной ветке с тем же именем и не разбирать ссылки по какой-либо другой причине, вам лучше использовать опцию Git push.default описанный здесь здесь и здесь. Например:
git config push.default current
Ответ 2
Использовать HEAD
В случае нажатия git вы можете использовать HEAD.
documentation утверждает
git push origin HEAD
Удобный способ нажатия текущей ветки на то же имя на пульте дистанционного управления.
Создайте псевдоним
В случаях, когда вы не можете использовать HEAD, я бы создал для него псевдоним. Я знаком с средой Mac, это решение для этой платформы, но я уверен, что есть способы сделать то же самое в Windows.
В вашем ~/.bash_profile создайте этот псевдоним
alias current_branch="git rev-parse --abbrev-ref HEAD"
Затем вы можете использовать его в своих командах git, выполнив
git push origin `current_branch`