Потяните новые обновления из оригинального репозитория GitHub в разветвленный репозиторий GitHub

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

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

Ответы

Ответ 1

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

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

fork

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

Ответ 2

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

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

$ git fetch upstream

с

$ git pull upstream master

так как git pull по существу git fetch + git merge.

Ответ 3

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

шаги:

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

Ответ 4

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

git remote add upstream ORIGINAL_REPOSITORY_URL

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

git fetch upstream      

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

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

git merge upstream/master

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

git push origin master

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

Ответ 5

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

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

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

Ответ 6

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