Как вы толкаете только одну ветку Git (и никаких других веток)? - PullRequest
223 голосов
/ 04 мая 2009

Я работаю над локальным хранилищем git. Есть две ветви, master и feature_x.

Я хочу отправить feature_x в удаленный репозиторий, но я не хочу отправлять изменения в ветку master.

Будет ли работать git push origin feature_x из моей ветви feature_x (ветка feature_x уже существует на удаленном компьютере)?

Я не хочу проверять это на своем боксе, потому что я не могу сейчас перейти к мастеру.

Ответы [ 4 ]

349 голосов
/ 04 мая 2009

да, просто сделайте следующее

git checkout feature_x
git push origin feature_x
65 голосов
/ 31 мая 2012

По умолчанию git push обновляет все удаленные ветви. Но вы можете настроить git так, чтобы он обновлял только текущую ветку.

git config push.default upstream

Это означает, что git обновит только текущую (извлеченную) ветвь, когда вы выполните git push.

Другие допустимые параметры:

  • nothing: не выдвигать ничего (ошибка), если явно не указан refspec . Это в первую очередь предназначено для людей, которые хотят избежать ошибок, всегда будучи явными.
  • matching: Нажмите на все ветви с одинаковым именем 1017 * на обоих концах. (опция по умолчанию до версии 1.7.11)
  • upstream: подтолкнуть текущую ветвь к ее восходящей ветка. Этот режим имеет смысл, только если вы отправляете в тот же репозиторий, из которого вы обычно извлекаете (т.е. центральный рабочий процесс ). Нет необходимости иметь одинаковое имя для локального и удаленного филиала.
  • tracking: устарело, вместо этого используйте upstream.
  • current: Переместить текущую ветвь в удаленную ветвь с тем же именем на принимающей стороне. Работает как в центральном, так и в нецентральном рабочих процессах.
  • simple: [доступно с версии 1.7.11] в централизованном рабочем процессе, работает как upstream с дополнительной безопасностью, позволяющей отказаться от push, если имя вышестоящей ветви отличается от локального При нажатии на пульт, отличный от того, с которого вы обычно тянете, используйте current. Это самый безопасный вариант и подходит для начинающих. Этот режим стал режимом по умолчанию в Git 2.0.
6 голосов
/ 29 марта 2014

Незначительное обновление поверх Ответ Картика Бозе - вы можете настроить git глобально, чтобы все ваши рабочие пространства работали таким образом:

git config --global push.default upstream
0 голосов
/ 07 января 2015

Допустим, у вас есть локальная ветка foo, удаленный узел с именем origin и удаленная ветка origin / master.

Чтобы передать содержимое foo в origin / master, сначала нужно установить его апстрим:

git checkout foo
git branch -u origin/master

Затем вы можете нажать на эту ветку, используя:

git push origin HEAD:master

В последней команде вы можете добавить --force, чтобы заменить всю историю происхождения / мастера на историю foo.

...