Как git нажать другую ветвь на удаленный/исходный?
My.git/config:
[remote "origin"]
url = [email protected]:nfpyfzyf/test.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Мои локальные ветки:
HEAD
|
F---G feature**current branch
/
C---D---E develop
/
A---B master
Теперь я нахожусь в ветке функций и хочу нажать на удаленный. Какова текущая команда, это git push origin feature
? Что произойдет, если я сделаю git push
?
Ответы
Ответ 1
Чтобы нажать конкретную ветвь, запустите git push <remote> <branch>
. В вашем случае ваш единственный установленный пульт - это origin
, и вы хотите нажать свою ветвь feature
, чтобы сделать
$ git push origin feature
Раздел "Примеры" документации git push
описывает, что произойдет, если вы запустите git push
без каких-либо других аргументов.
git push
Работает как git push <remote>
, где текущие ветки удалены (или origin
, если для текущей ветки не настроен пульт).
Учитывая конфигурацию в вашем вопросе, ветвь feature
не настроена на удаленный сервер, поэтому вышеупомянутый вызов эквивалентен следующему примеру.
git push origin
Без дополнительной настройки работает, например, git push origin :
& hellip;
Следуя цепочке последовательностей, мы видим, что это эквивалентно
git push origin :
Нажмите "соответствующие" ветки в начало. См. Раздел OPTIONS выше для описания "совпадающих" ветвей.
Правила для соответствия ветвей
Специальный refspec :
(или +:
, чтобы разрешить немедленные обновления) направляет git
на "соответствующие" ветки: для каждой ветки, которая существует на локальной стороне, удаленная сторона обновляется, если ветвь с тем же именем уже существует на удаленной стороне. Это режим работы по умолчанию, если не обнаружено явного refspec (это ни в командной строке, ни в любой строке Push соответствующего файла remotes - см. Ниже) и нет переменной конфигурации push.default
.
В вашем случае единственная соответствующая ветвь - master
, поэтому git push
вытолкнет эту ветку и выйдет.
Ответ 2
Да git push origin feature
- это правильная и явная команда.
Что происходит, когда вы делаете git push
без аргументов, зависит ваша конфигурация. Конфигурационная переменная push.default
сообщает git, что делать в этом случае. Проверьте man-страницу (git config --help
и найдите push.default
) для получения дополнительной информации. Просто так много возможностей: nothing
, matching
, upstream
, simple
и current
.
Также В чем разница между git push.default = current и push.default = upstream? может помочь.
Ответ 3
git push origin feature
является правильным. Если вы просто git push
, он, вероятно, скажет что-то вроде этого:
fatal: The current branch feature has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin feature
После того, как вы использовали --set-upstream
(или просто -u), просто git push
будет работать
Ответ 4
Если вы работаете с git -flow, вы можете использовать
git flow feature publish $FEATURE
чтобы направить ветвь на ваш пульт и создать ее удаленно.
Он равен простому
git push origin $FEATURE
Если вы просто делаете git push
, это зависит от вашей конфигурации, что происходит - в моей конфигурации она выталкивает все удаленные существующие ветки.
Ответ 5
git push origin $FEATURE
, безусловно, правильный, и вы получите то, что хотите. Однако я часто использую:
git push -u origin HEAD
Это подтолкнет мою текущую ветку, используя имя ветки, поэтому мне не нужно явно вводить ее в командной строке. Как упоминалось в одном из других ответов, -u
установит восходящий поток, так что в будущем будет работать обычный git push
.