Потяните новые обновления из оригинального репозитория GitHub в разветвленный репозиторий GitHub
Я разветкил какой-то репозиторий на GitHub и хотел бы обновить мою версию с помощью коммитов и обновлений, сделанных в исходном репозитории. Они были сделаны после того, как я развернул свою копию.
Как я могу внести изменения, которые были сделаны в источнике, и включить их в мой репозиторий?
Ответы
Ответ 1
Вы должны добавить исходный репозиторий (тот, который вы разветкили) в качестве удаленного.
Со страницы справочника по вилке GitHub:
Как только клон будет завершен, в вашем репо появится пульт "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.
Смотрите также "Git fork - это git clone?".
Ответ 2
В дополнение к ответу VonC вы можете настроить его по своему вкусу еще больше.
После извлечения из удаленной ветки вам все равно придется объединить коммиты. Я бы заменил
$ git fetch upstream
с
$ git pull upstream master
так как git pull по существу git fetch + git merge.
Ответ 3
В этом видео показано, как обновить форк напрямую с GitHub.
шаги:
- Откройте вилку на GitHub.
- Нажмите на
Pull Requests
на Pull Requests
. - Нажмите на
New Pull Request
на New Pull Request
. По умолчанию GitHub будет сравнивать оригинал с вашим форком, и не нужно ничего сравнивать, если вы не вносили никаких изменений. - Нажмите на
switching the base
. Теперь GitHub будет сравнивать ваш форк с оригиналом, и вы должны увидеть все последние изменения. - Нажмите
Create a pull request
на Create a pull request
для этого сравнения и назначьте предсказуемое имя для вашего запроса (например, Обновить с оригинала). - Нажмите на
Create pull request
на Create pull request
. - Прокрутите вниз и нажмите
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
Если нечего терять, вы также можете просто удалить свой форк, просто перейдите в настройки... перейдите в раздел опасной зоны ниже и нажмите "Удалить репозиторий". После этого вам будет предложено ввести имя хранилища и пароль. После этого вы просто снова разветвляете оригинал.