Подтвердить что ты не робот

Git псевдоним текущей ветки

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

как этот:

git config alias.po "push origin"

использует его так:

git po foo_branch

Я хотел бы просто запустить git po и взять текущую ветвь в качестве параметра.

4b9b3361

Ответ 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