Я работаю над локальным хранилищем git. Есть две ветви, master
и feature_x
.
Я хочу нажать feature_x
на удаленное репо, но я не хочу публиковать изменения в master
ветке.
Будет ли работать git push origin feature_x
из моей feature_x
ветки ( feature_x
ветка уже существует на удаленной)?
Я не хочу проверять это на своем боксе, потому что я не могу сейчас перейти к мастеру.
Ответы:
да просто сделай следующее
источник
git push -u origin <branch-name>
. Однако вы не упомянули об этом. Это необходимо ?-u
опция вgit-push
команде установит восходящую ссылку для отслеживания только что нажатой ветви. Это заставит вещи, подобныеgit-pull
этой ветке, в будущем уже знать, из какой ветви тянуть, не указывая ее. Это не обязательный параметр для передачи одной ветви, но он широко используется, потому что многие люди хотят, чтобы локальная ветка отслеживала удаленную ветку, которую они нажимают.По умолчанию
git push
обновляет все удаленные филиалы. Но вы можете настроить git так, чтобы он обновлял только текущую ветку.Это означает, что git обновит только текущую (извлеченную) ветку, когда вы выполните git push.
Другие допустимые параметры:
nothing
: Ничего не выдвигать (ошибка), если явно не указан refspec . Это в первую очередь предназначено для людей, которые хотят избежать ошибок, всегда будучи явными.matching
: Нажмите на все ветви с одинаковыми именами на обоих концах. (опция по умолчанию до версии 1.7.11)upstream
: Нажмите текущую ветвь в ее восходящую ветвь. Этот режим имеет смысл, только если вы отправляете в тот же репозиторий, из которого вы обычно извлекаете (то есть центральный рабочий процесс ). Не нужно иметь одинаковое имя для локальной и удаленной ветки.tracking
: Устарел, используйтеupstream
вместо этого.current
: Нажмите текущую ветку на удаленную ветку с тем же именем на принимающей стороне. Работает как в центральном, так и не центральном рабочих процессах.simple
: [доступно начиная с версии 1.7.11] в централизованном рабочем процессе, работает какupstream
с дополнительной безопасностью, чтобы отказаться от push, если имя вышестоящей ветви отличается от локального. При нажатии на пульт, отличный от того, с которого вы обычно тянете, работайте какcurrent
. Это самый безопасный вариант и подходит для начинающих. Этот режим стал режимом по умолчанию в Git 2.0.источник
current
было то , что я искал, по умолчаниюgit push
вfoo
ветке будет толкать его вorigin/foo
ветку.current
по умолчанию имеет больше смысла.simple
что по умолчанию имеет больше смысла. Я обновил ответ «когда использовать что». Просьба посмотреть.simple
.Незначительное обновление поверх ответа Karthik Bose - вы можете настроить git глобально, чтобы все ваши рабочие пространства работали таким образом:
источник
Допустим, у вас есть локальная ветка foo, удаленный узел с именем origin и удаленная ветка origin / master.
Чтобы передать содержимое foo в origin / master, вам сначала нужно установить его апстрим:
Затем вы можете нажать на эту ветку, используя:
В последней команде вы можете добавить --force, чтобы заменить всю историю происхождения / мастера на историю foo.
источник