Как вставить локальную ветку Git в главную ветку на удаленном компьютере?


468

В моем локальном репозитории есть ветвь Develop, и я хочу убедиться, что когда я нажимаю на нее, она объединяется с origin / master. В настоящее время, когда я нажимаю, он добавляется в удаленную ветку разработки.

Как я могу это сделать?


Есть ли какая-то конкретная причина, по которой вы не хотите сливать ее локально, originа затем передавать ее на удаленный компьютер?
bhamby

Я думаю, что @galador означает объединение локально в master- но это верный момент. Если он достаточно стабилен для основной ветки origin, то, конечно, он достаточно стабилен для вашей основной ветки!
Каскабель

1
@Джефроми Да, упс, опечатка. -_-
bhamby

2
@Jefromi представьте, что вы работали над чем-то в своем местном мастере, и вы сделали некоторые коммиты, которые еще не готовы выдвинуть. Тогда получается, что у вас есть срочная задача. Вы создаете локальное отделение от удаленного мастера, работаете и возвращаете свои изменения обратно в мастер. Может быть, это не самый лучший способ, но это то, что случилось со мной, и это то, что я сделал. Это сработало без нареканий. Ну, я должен был сначала работать в отдельном местном отделении, но боль в заднице постоянно разветвляться, и было слишком поздно.
Пинкен

21
Я помещаю ветку разработки в не-публичное приложение для тестирования на Heroku, чтобы посмотреть, как все работает в среде Heroku. Определенно не хочу сливать мой код в master, но Heroku не запустит код, если он не masterвключен в приложение. Это вполне разумный запрос с законными вариантами использования!
Джейкоб Эвелин

Ответы:


814
$ git push origin develop:master

или, в более общем плане

$ git push <remote> <local branch name>:<remote branch to push into>

25
Не делайте «git push origin: master», которое может удалить вашу существующую ветку на удаленном компьютере
Мангирдас Скрипка

48
Правда @MangirdasSkripka! Просто используйте, git push origin head:masterесли вы не хотите указывать название текущей ветки :)
Francesc Rosas

23
Хорошая идея @ FrancescRosàs, хотя и ГЛАВНАЯ (заглавные буквы).
Smokku

@Mipadi, если у меня есть разрешение mender, могу ли я переместить это
Neeraj Sharma

11
@NeerajSharma: Я не знаю, что такое разрешение мужчины или что вы хотите переместить.
Мипади

194

Как люди упоминали в комментариях, вы, вероятно, не хотите этого делать ... Ответ от mipadi абсолютно верен, если вы знаете, что делаете.

Я бы сказал:

git checkout master
git pull               # to update the state to the latest remote master state
git merge develop      # to bring changes to local master from your develop branch
git push origin master # push current HEAD to remote master branch

 


23
Просто хочу сказать, что в его просьбе есть какой-то смысл, я использую этот случай, чтобы развернуть (протолкнуть) свою разработку мастеру Heroku
Фабиано Сориани,

5
Опять же, эта техника ИМХО только для продвинутых пользователей git. Не то, чтобы это было слишком сложно, просто нужно, чтобы люди понимали, что они делают и почему это работает так, как работает. Каждый может свободно использовать git по своему вкусу, но я думаю, что следование предложенному мною подходу намного лучше в образовательных целях, особенно для новичков в git. Чистые «ветки тем» - это способ начать, вы можете оптимизировать свой рабочий процесс позже, если это необходимо.
Евгений Саджин

1
Это на самом деле довольно распространенная вещь. Основная ветвь обычно является вашей веткой развертывания. Если две команды намеренно расходятся в своем развертывании, то, скорее всего, вы собираетесь использовать выбранную вишней локальную ветвь для продвижения патчей вверх по течению. Теперь вы можете утверждать, что изменения должны быть перенесены вверх по течению в ветвь, а затем объединены оттуда в master, но, конечно, не так уж странно делать это другим способом, IMO.
dgatwood

+1 Это самый логичный способ «собрать» производственную версию.
Райан

Как бы вы это сделали, если вы не хотите сливаться с разработкой, но развили ребазинг в мастер?
user239558

-1

В качестве дополнения к ответу @ Eugene, еще одна версия, которая будет работать для передачи кода из локального репо в ветку master / development.

Переключиться на ветку «мастер»:

$ git checkout master

Слияние локального репо с мастером:

$ git merge --no-ff FEATURE/<branch_Name>

Нажмите, чтобы освоить:

$ git push

-1

Выполните следующие шаги для продвижения локального репо в ветку Masterenter code here

$ git status

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.