Github: импорт ветки вверх по течению в fork - PullRequest
151 голосов
/ 10 декабря 2010

У меня есть вилка (origin) из проекта (upstream) на github. Теперь вышестоящий проект добавил новую ветку, которую я хочу импортировать в свой форк. Как мне это сделать?

Я попытался проверить удаленное и создать ветку поверх этого, но это настраивает ветку так, как git push пытается протолкнуть к upstream:

git checkout upstream/branch
git checkout -b branch

1010 * редактировать * Может быть, это не было ясно, но я хочу добавить ветку в мой локальный репозиторий, чтобы я мог перенести ее в origin (мой форк) через git push. Потому что репозитории верхнего уровня обычно доступны только для чтения, и вы делаете это, чтобы внести свой вклад. Итак, я хочу проверить несуществующую ветку на origin, содержимое которой будет извлечено из upstream.

Ответы [ 5 ]

229 голосов
/ 10 декабря 2010
  1. Убедитесь, что вы добавили новую восходящую ветку в свое локальное репо :

    • Сначала убедитесь, что ваше рабочее дерево чистое (зафиксировать / спрятать / отменить любые изменения)
    • Затем git fetch upstream для извлечения новой восходящей ветви
  2. Создание и переключение на локальную версию новой восходящей ветви (newbranch):

    • git checkout -b newbranch upstream/newbranch
  3. Когда вы будете готовы переместить новую ветку в origin :

    • git push -u origin newbranch

Переключатель -u устанавливает отслеживание для указанного пульта (в данном примере, origin)

6 голосов
/ 10 декабря 2010

Я бы использовал

git checkout -b <new_branch> upstream/<new_branch>
3 голосов
/ 05 октября 2013

У меня тоже были проблемы с этим, и Google взял меня сюда.Решения не сработали.Моя проблема заключалась в том, что когда я добавил свой апстрим, он настроил мой git config только для выборки master, а не для всех ветвей.Например, это выглядело так:

[remote "somebody"]
        url = git@github.com:somebodys/repo.git
        fetch = +refs/heads/master:refs/remotes/upstream/master

Редактирование .git / config следующим образом решило мою проблему

[remote "somebody"]
        url = git@github.com:somebodys/repo.git
        fetch = +refs/heads/*:refs/remotes/upstream/*
1 голос
/ 09 августа 2018

Следующие шаги сработали хорошо для меня (при условии, что имя ответвляющей ветки равно branch):

$ git fetch upstream
$ git checkout branch
$ git push origin
0 голосов
/ 10 декабря 2010

--track?

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