Как скопировать локальный ветвь Git в удаленную репо

Я сделал следующие шаги:

  • Клонирование удаленного репозитория Git
  • Разветвленная ветвь мастера к экспериментальной
  • отредактированный/проверенный/зафиксированный код в экспериментальной ветке

Теперь я не готов объединить эксперимент в мастер. Тем не менее, я хочу вернуть его обратно к удаленному репо, поскольку это хранилище, которое я разделяю несколькими коллегами. Я бы хотел, чтобы они увидели, что я сделал в экспериментальной ветке. Обычно я просто получаю доступ к удаленному репо через SSH.

Как мне разделить локальную ветвь на удаленном репо, не затрагивая ветвь удаленного репо?

Ответ 1

В соответствии с git нажмите ручную страницу:

 git push origin experimental

Найти ссылку, которая соответствует experimental в исходном репозитории (скорее всего, она найдет refs/heads/experimental), и обновить тот же ref (например, refs/heads/experimental) в исходном репозитории с ним.
Если experimental не существует удаленно, оно будет создано.

Это то же самое, что:

git push origin experimental:refs/heads/experimental

Создайте ветвь experimental в исходном репозитории, скопировав текущую ветку experimental.
Эта форма нужна только для создания новой ветки или тега в удаленном репозитории, когда локальное имя и удаленное имя отличаются; в противном случае имя ссылки будет работать.

Или, как упоминалось в git tip, вы можете настроить "Branch Branch Remote Remote":

Вы можете использовать git config для назначения удаленной по умолчанию удаленной ветки. Этот пульт по умолчанию будет использоваться для нажатия этой ветки, если не указано иное.

Это уже сделано для вас, когда вы используете клон git, позволяя использовать push git без каких-либо аргументов, чтобы направить локальную ветвь мастера для обновления основной ветки репозитория.

git config branch.<name>.remote <remote> 

может использоваться для указания этого вручную.


Jan предлагает (для git >= 1.7.0) параметр push -u (или push --set-upstream):

Для каждой ветки, которая обновлена ​​или успешно нажата, добавьте ссылку вверху (отслеживание), используемую без аргументов git -pull (1) и другие команды.

Таким образом, вам не нужно выполнять никаких git config.

git push -u origin experimental

Ответ 2

Если имя вашей ветки experimental, а имя пульта - origin, то это

git push origin experimental

Ответ 3

git push -u <remote-name> <branch-name> не работает, если вновь созданная ветвь не создается из одного и того же репо, т.е. если вы не создали новую ветку с помощью git checkout -b new_branch, тогда это не сработает.

Например, я клонировал два разных репозитория локально, и мне пришлось копировать repo2/branch1 в repo1/, а затем также нажимать на него.

Эта ссылка помогла мне перенаправить мой локальный филиал (клонированный из другого репо) на мое удаленное репо:

Ответ 4

Вот авторитетная страница github для удаленного управления github http://github.com/guides/push-a-branch-to-github. Это поможет вам ответить на все ваши вопросы.