Как вы толкаете только одну ветку Git (и никаких других веток)?
Я работаю над локальным хранилищем git. Есть две ветви, master
а также feature_x
,
Я хочу подтолкнуть feature_x
к удаленному репо, но я не хочу выдвигать изменения на master
ветка.
Будет git push origin feature_x
от моего feature_x
ветка (feature_x
ветка уже есть на удаленной) работаешь?
Я не хочу проверять это на своем ящике, потому что я не могу подтолкнуть к мастеру прямо сейчас.
6 ответов
Да просто сделай следующее
git checkout feature_x
git push origin feature_x
По умолчанию git push
обновляет все удаленные ветки. Но вы можете настроить git так, чтобы он обновлял только текущую ветку.
git config push.default upstream
Это означает, что git обновит только текущую (извлеченную) ветку, когда вы выполните git push.
Другие допустимые параметры:
nothing
: Не выдвигайте ничего (ошибка), если явно не указан refspec. Это в первую очередь предназначено для людей, которые хотят избежать ошибок, всегда будучи явными.matching
: Нажмите на все ветви с одинаковыми именами на обоих концах. (опция по умолчанию до версии 1.7.11)upstream
: Нажмите текущую ветвь в ее восходящую ветвь. Этот режим имеет смысл, только если вы отправляете в тот же репозиторий, из которого вы обычно извлекаете (то есть центральный рабочий процесс). Не нужно иметь одинаковое имя для локальной и удаленной ветки.tracking
: Устарел, использоватьupstream
вместо.current
: Нажмите текущую ветку к удаленной ветке с тем же именем на принимающей стороне. Работает как в центральном, так и не центральном рабочих процессах.simple
: [доступно с версии 1.7.11] в централизованном рабочем процессе, работает какupstream
с дополнительной безопасностью, чтобы отказаться от push, если имя вышестоящей ветки отличается от локального. При нажатии на пульт, отличный от того, с которого вы обычно тянете, используйтеcurrent
, Это самый безопасный вариант и подходит для начинающих. Этот режим стал режимом по умолчанию в Git 2.0.
Незначительное обновление поверх ответа Karthik Bose - вы можете настроить git глобально, чтобы все ваши рабочие пространства работали таким образом:
git config --global push.default upstream
Лучший ответ будет
git config push.default current
upsteam
работает, но когда у вас нет ветки на
origin
затем вам нужно будет установить восходящую ветвь. Изменение его на
current
автоматически установит восходящую ветку и немедленно нажмет на ветку.
Чтобы нажать текущую ветку независимо от того, какая у вас конфигурация:
git push origin $(git branch --show-current)
Допустим, у вас есть локальная ветка foo, удаленный узел с именем origin и удаленная ветка origin / master.
Чтобы перенести содержимое foo в origin / master, сначала нужно установить его upstream:
git checkout foo
git branch -u origin/master
Затем вы можете нажать на эту ветку, используя:
git push origin HEAD:master
В последней команде вы можете добавить --force, чтобы заменить всю историю происхождения / мастера на историю foo.