2013-04-23 2 views
11

Моего .git/конфигурация:Как git нажимать другую ветку на удаленный/происхождение?

[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?

ответ

14

Чтобы ввести конкретную ветвь, запустите git push <remote> <branch>. В вашем случае, ваш определенно только пульт дистанционного управления origin, и вы хотите, чтобы толкать feature ветки, так что делает

$ git push origin feature

“Examples” section of the git push documentation описывает то, что происходит, если вы запустите git push без каких-либо других аргументов.

git push

Работает как git push <remote>, где находится текущая ветвь отдаленных (или origin, если удаленный модуль не сконфигурирован для текущей ветви).

Учитывая конфигурацию в вашем вопросе, ваша ветка feature не имеет удаленной конфигурации, поэтому вышеупомянутый вызов эквивалентен следующему примеру.

git push origin

Без дополнительной настройки, работает как git push origin : & hellip;

После последовательной цепи, мы видим, что это эквивалентно

git push origin :

PUSH «соответствия» ветвей к происхождению. См. Раздел OPTIONS выше для описания «совпадающих» ветвей.

Правила для соответствующих ветвей

Специальная refspec : (или +:, чтобы без быстрой перемотки вперед обновлений) направляет git нажать «сшивки» ветви: для каждой отрасли, которая существует на локальная сторона, удаленная сторона обновляется, если ветвь с тем же именем уже существует на удаленной стороне. Это режим работы по умолчанию, если не найдено явного refspec (который не находится ни в командной строке, ни в любой строке Push соответствующего файла remotes - см. Ниже) и нет push.default.

В вашем случае, единственный соответствующий филиал является master, так git push будет толкать эту ветку и выйти.

0

Да git push origin feature - это правильная и явная команда.

Что происходит, когда вы делаете git push без аргументов, зависит ваша конфигурация. Конфигурационная переменная push.default сообщает git, что делать в этом случае. Проверьте man-страницу (git config --help и найдите push.default) для получения дополнительной информации. Просто так много, есть несколько возможностей: nothing, matching, upstream, simple и current.

Также What is the difference between git push.default=current and push.default=upstream? может помочь.

0

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 будет работать

0

Если вы работаете с git-flow вы можете используйте

git flow feature publish $FEATURE 

Чтобы протащить ветку к пульту дистанционного управления и создать ее дистанционно.

Это равно сделать простой

git push origin $FEATURE 

Если вы просто делаете git push это зависит от конфигурации, что происходит - в моей конфигурации толкает все удаленно существующие филиалы.

0

git push origin $FEATURE, конечно, правильный, и вы получите то, что хотите. Тем не менее, я часто использую:

git push -u origin HEAD 

Это будет толкать мою текущую ветвь, используя имя ветви, так что я не придется вводить его явно в командной строке. Как упоминалось в одном из других ответов, -u установит восходящий поток, так что в будущем будет работать обычная git push.