Как скопировать локальную ветку Git в удаленный репозиторий - PullRequest
127 голосов
/ 30 апреля 2009

Я предпринял следующие шаги:

  1. Клонировал удаленный репозиторий Git
  2. Разветвленная ветвь мастера на экспериментальную
  3. отредактированный / протестированный / зафиксированный код в экспериментальной ветке

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

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

Ответы [ 5 ]

157 голосов
/ 30 апреля 2009

Согласно Страница руководства git push :

 git push origin experimental

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

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

git push origin experimental:refs/heads/experimental

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

Или, как упомянуто в git tip , вы можете установить «Remote по умолчанию для филиала»:

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

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

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

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


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

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

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

git push -u origin experimental
15 голосов
/ 30 апреля 2009

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

git push origin experimental
1 голос
/ 25 февраля 2014

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

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

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

0 голосов
/ 19 июня 2018

ТЛ; др

$ git push --set-upstream origin your_new_branch

подробнее

после того, как вы сделали несколько коммитов в свой:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

вы отправляете свою ветку с указанием восходящего потока в одно из удаленных хранилищ, как показано ниже:

$ git push --set-upstream REMOTE YOUR_BRANCH

пульты можно увидеть по

$ git remote -v

обычно у вас будет один пульт по умолчанию origin. поэтому ваша команда будет выглядеть так:

$ git push --set-upstream origin your_new_branch

и все последующие нажатия могут быть сделаны только с git push.

0 голосов
/ 30 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...