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

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

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

5 ответов

Решение

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

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

вилка

Как только клон будет завершен, в вашем репо появится пульт с именем " 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.

раздвоенный

Смотрите также " Git fork - это git clone? ".

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

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

$ git fetch upstream

с

$ git pull upstream master

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

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

git remote add upstream ORIGINAL_REPOSITORY_URL

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

git fetch upstream      

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

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

git merge upstream/master

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

git push origin master

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

Это видео показывает, как обновить форк напрямую с 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 слияния. Если на вашем форке не было никаких изменений, вы сможете объединить его автоматически.

Если вы хотите сделать это без cli, вы можете сделать это полностью на сайте Github.

  1. Перейдите в репозиторий вашей вилки.
  2. Нажмите на New pull request.
  3. Обязательно установите вилку в качестве базового репозитория, а исходный (вышестоящий) репозиторий в качестве головного репозитория. Обычно вы хотите синхронизировать только основную ветку.
  4. Create new pull request.
  5. Щелкните стрелку справа от кнопки слияния и убедитесь, что вы выбрали перебазирование вместо слияния. Затем нажмите кнопку. Таким образом, это не приведет к ненужной фиксации слияния.
  6. Готово.

Если вам нечего терять, вы также можете просто удалить вилку, просто зайдите в настройки... перейдите в раздел опасной зоны ниже и нажмите Удалить репозиторий. Он попросит вас ввести имя репозитория и ваш пароль после. После этого вы снова просто разветвляете оригинал.

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

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

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

Чтобы автоматически синхронизировать ваш разветвленный репозиторий с родительским репозиторием, вы можете использовать приложение Pull на GitHub.

Дополнительные сведения см. В файле Readme.

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

Другие вопросы по тегам