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

Как 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?

4b9b3361

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