Git - нажатие текущей ветки ветки

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

Например, предположим, что я на ветке feature/123-sandbox-tests я бы использовал

git push origin feature/123-sandbox-tests

который является утомительным. Я ищу ярлык, что-то вроде

git push origin current

где Git знает, что ток feature/123-sandbox-tests.


Изменить. Начиная с версии 2.0, поведение Git по умолчанию изменилось на более интуитивное поведение, чего я хотел достичь. Подробнее см. Этот вопрос.

Изменить 2: ceztko answer - лучший ответ, поскольку он позволяет нажимать текущую ветку, независимо от настроек.

Ответы

Ответ 1

Согласно git push документация:

git push origin HEAD
    A handy way to push the current branch to the same name on the remote.

Итак, я думаю, что вам нужно git push origin HEAD. Также может быть полезно git push -u origin HEAD установить информацию отслеживания восходящего потока в локальной ветке, если вы еще не нажали на начало координат.

Ответ 2

Вы можете настроить git на то, чтобы нажать на текущую ветку, используя следующую команду

git config --global push.default current

тогда просто

git push 

это подтолкнет код к вашей текущей ветке.

Ответ 3

Вы должны взглянуть на аналогичный вопрос в Поведение по умолчанию "git push" без указания ветки

В основном это объясняет, как настроить поведение по умолчанию, чтобы ваша текущая ветка выполняла только git push. Вероятно, вам нужно:

git config --global push.default current

Другие параметры:

  • ничего: не нажимайте ничего
  • соответствие: нажмите все соответствующие ветки
  • вверх по течению/ отслеживание. Нажмите текущую ветвь на то, что она отслеживает.
  • текущий: нажмите текущую ветвь

Ответ 4

Если вы используете git 1.7.x, вы можете запустить следующую команду, чтобы установить ветвь удаленного отслеживания.

git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests

Затем вы можете просто использовать git push, чтобы нажать все изменения. Более полный ответ см. В ответе на аналогичный вопрос здесь.

Если вы хотите только нажать текущую ветку с помощью команды push, вы можете изменить поведение push в верхнем течении:

git config --global push.default upstream

Ответ 5

Самый простой способ: выполнить git push -u origin feature/123-sandbox-tests один раз. Это подталкивает ветку так, как вы привыкли ее выполнять, а также настраивает информацию отслеживания восходящего потока в вашей локальной конфигурации. После этого вы можете просто git push нажимать отслеживаемые ветки на их удаленный (ые) пульт (ы).

Вы также можете сделать это в настройке самостоятельно, установив branch.<branch name>.merge в имя удаленной ветки (в вашем случае то же самое, что и локальное имя) и, при желании, branch.<branch name>.remote на имя удаленного устройства, на которое вы хотите нажать (по умолчанию - по умолчанию). Если вы посмотрите в своей конфигурации, скорее всего, уже один из них установлен для master, поэтому вы можете следовать этому примеру.

Наконец, убедитесь, что вы считаете настройку push.default. По умолчанию используется "сопоставление", которое может иметь нежелательные и неожиданные результаты. Большинство людей, которых я знаю, находят "вверх по течению" более интуитивными, что подталкивает только текущую ветвь.

Подробности о каждом из этих параметров можно найти на странице git -config.

Во второй раз,, перечитывая свой вопрос, я думаю, вы все это знаете. Я думаю, что то, что вы на самом деле ищете, не существует. Как насчет функции bash что-то вроде (untested):

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}

Ответ 6

Для чего это стоит, конечный ярлык:

В моем .bash_profile у меня есть alias push="git push origin HEAD", поэтому всякий раз, когда я набираю push, я знаю, что нажимаю на текущую ветку, в которой я включен.

Ответ 7

Я использую такие псевдонимы в моей конфигурации .bashrc

alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'

В команде $gpb она берет имя текущей ветки и толкает ее в начало.

Вот мои другие псевдонимы:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'

Ответ 8

С помощью ответа ceztko я написал эту небольшую вспомогательную функцию, чтобы облегчить мою жизнь:

function gpu()
{
    if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
        git push origin HEAD
    else
        git push -u origin HEAD
    fi
}

Он подталкивает текущую ветку к началу координат и также устанавливает ветвь удаленного отслеживания, если она еще не была настроена.