Извлекать новые обновления из исходного репозитория GitHub в разветвленный репозиторий GitHub. - PullRequest
567 голосов
/ 11 октября 2010

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

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

Ответы [ 5 ]

653 голосов
/ 11 октября 2010

Вы должны добавить исходный репозиторий (тот, который вы разветвляли) в качестве удаленного.

со страницы руководства по GitHub fork :

fork

Как только клон будет завершен, в вашем репо появится пульт с именем «origin», указывающий на ваш форк на GitHub.
Не позволяйте имени сбить вас с толку, это не указывает наоригинальное репо, с которого вы ответили.Чтобы помочь вам следить за этим репо, мы добавим еще один пульт с именем «upstream»:

$ cd github-services
$ git remote add upstream git://github.com/pjhyett/github-services.git
$ git fetch upstream

# then: (like "git pull" which is fetch + merge)
$ git merge upstream/master master

# or, better, replay your local work on top of the fetched branch
# like a "git pull --rebase"
$ git rebase upstream/master

У вас также есть рубиновый гем, который может облегчить эти операции GitHub .

forked

См. Также « Git fork - это git clone? ».

96 голосов
/ 17 сентября 2012

В дополнение к ответу VonC, вы можете настроить его по своему вкусу.

После извлечения из удаленной ветви вам все равно придется объединить коммиты. Я бы заменил

$ git fetch upstream

с

$ git pull upstream master

, поскольку git pull по сути является git fetch + git merge.

62 голосов
/ 20 мая 2015

Это видео показывает , как обновить форк напрямую с GitHub

Шаги:

  1. Откройте вилку на GitHub.
  2. Нажмите Pull Requests.
  3. Нажмите New Pull Request. По умолчанию GitHub сравнивает оригинал с вашим форком, и не нужно ничего сравнивать, если вы не внесли никаких изменений.
  4. Нажмите на switching the base. Теперь GitHub будет сравнивать ваш форк с оригиналом, и вы должны увидеть все последние изменения.
  5. Нажмите Create a pull request для этого сравнения и назначьте предсказуемое имя для вашего запроса извлечения (например, Обновить с оригинала).
  6. Нажмите Create pull request.
  7. Прокрутите вниз и нажмите Merge pull request и, наконец, Confirm объединить. Если на вашем форке не было никаких изменений, вы сможете объединить его автоматически.
48 голосов
/ 18 февраля 2016

Использование:

git remote add upstream ORIGINAL_REPOSITORY_URL

Это установит ваш апстрим в репозиторий, из которого вы разветвлялись.Затем сделайте следующее:

git fetch upstream      

Это приведет к извлечению всех веток, включая master, из исходного хранилища.

Объедините эти данные в локальной ветке master:

git merge upstream/master

Внесите изменения в ваш разветвленный репозиторий, т.е. в источник:

git push origin master

Вуаля!Вы закончили синхронизацию с исходным хранилищем.

1 голос
/ 02 апреля 2017

Если вы используете настольное приложение GitHub, в правом верхнем углу есть кнопка синхронизации. Нажмите на него, затем Update from <original repo> возле верхнего левого угла.

Если нет синхронизируемых изменений, это будет неактивно.

Вот несколько скриншотов , чтобы сделать это легко.

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