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
}
Он подталкивает текущую ветку к началу координат и также устанавливает ветвь удаленного отслеживания, если она еще не была настроена.