Git псевдоним текущей ветки
Я хотел бы улучшить свои текущие псевдонимы, большинство из них работают над веткой.
Есть ли способ ссылаться на текущую ветвь в псевдониме git, поэтому мне не нужно передавать его каждый раз?
как этот:
git config alias.po "push origin"
использует его так:
git po foo_branch
Я хотел бы просто запустить git po
и взять текущую ветвь в качестве параметра.
Ответы
Ответ 1
Этот ответ будет действителен, начиная с Git 2.0, где поведение по умолчанию по умолчанию будет simple
Если параметр push.default
не установлен на matching
, git push
без указания аргумента всегда будет вызывать текущую ветку, поэтому в этом случае вам не нужно указывать его.
Ответ 2
[alias]
po = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\""
Ответ 3
Я не знаю никакого встроенного способа, но вы можете сделать с псевдонимом оболочки:
alias gpo='git push origin "$(git-current-branch 2> /dev/null)"'
Где git-current-branch
определяется следующим образом:
git-current-branch () {
if ! git rev-parse 2> /dev/null
then
print "$0: not a repository: $PWD" >&2
return 1
fi
local ref="$(git symbolic-ref HEAD 2> /dev/null)"
if [[ -n "$ref" ]]
then
print "${ref#refs/heads/}"
return 0
else
return 1
fi
}
Бесстыдно взято из Prezto.
Ответ 4
Это не 100% ясно из вашего вопроса, какой из этих двух псевдонимов вам нужен.
Это приведет к нажатию текущей ветки:
git config alias.po !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push origin $tmp_branch; unset $tmp_branch; }; f
Это приведет к нажатию имени ветки (git po branchName
):
git config alias.po !f() { git push origin $1; }; f