Как вы толкаете только одну ветку 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.

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