Я разбудил чей-то репозиторий на GitHub и хотел бы обновить мою версию коммитами и обновлениями, сделанными в оригинальном репозитории. Они были сделаны после того, как я раздвоил свою копию.
Как я могу вытащить изменения, которые были сделаны в источнике, и включить их в мой репозиторий?
git push --force origin --tags
после предложенных решений!Ответы:
Вы должны добавить исходный репозиторий (тот, который вы разветвляли) в качестве удаленного.
Со страницы руководства по вилке GitHub :
У вас также есть рубиновый драгоценный камень, который может облегчить эти операции GitHub .
Смотрите также « Git fork - это git clone? ».
источник
git rebase upstream/master
, но я добавил две возможности в ответе.git push --force
, заменив историю своей ветки на GitHub своей локальной веткой, которую вы только что перебазировали. Так как только вы используете грустную ветку, никакой путаницы не возникает.В дополнение к ответу VonC, вы можете настроить его по своему вкусу.
После извлечения из удаленной ветви вам все равно придется объединить коммиты. Я бы заменил
с
поскольку git pull по сути является git fetch + git merge.
источник
git rebase upstream master
Обратите внимание, что это не является бесконфликтным, если вы достаточно отклонились отupstream/master
. См. Git-scm.com/docs/git-rebase (tl; dr: этот жесткий сбрасывает ваш локальный мастер на тот, что был в восходящем потоке, а затем пытается объединить все локальные коммиты с точки расхождения вперед)В этом видео показано, как обновить форк напрямую с GitHub.
шаги:
Pull Requests
.New Pull Request
. По умолчанию GitHub сравнивает оригинал с вашим форком, и не должно быть ничего для сравнения, если вы не внесли никаких изменений.switching the base
. Теперь GitHub будет сравнивать ваш форк с оригиналом, и вы должны увидеть все последние изменения.Create a pull request
для сравнения и назначьте предсказуемое имя для вашего запроса извлечения (например, Обновить с оригинала).Create pull request
.Merge pull request
и, наконец,Confirm
объедините. Если на вашем форке не было никаких изменений, вы сможете объединить его автоматически.источник
switching the base
вариантИспользование:
Это установит ваш апстрим в репозиторий, из которого вы разветвлены. Тогда сделайте это:
Это приведет к извлечению всех веток, включая master, из исходного хранилища.
Объедините эти данные в вашей локальной ветке master:
Перенесите изменения в ваш разветвленный репозиторий, т.е. в источник:
Вуаля! Вы закончили синхронизацию с исходным хранилищем.
источник
Если вы используете настольное приложение GitHub, в правом верхнем углу есть кнопка синхронизации. Нажмите на это тогда
Update from <original repo>
около верхнего левого.Если нет изменений для синхронизации, это будет неактивно.
Вот несколько скриншотов, чтобы сделать это легко.
источник
Если нечего терять, вы также можете просто удалить свой форк, просто перейдите в настройки ... перейдите в раздел опасной зоны ниже и нажмите «Удалить репозиторий». После этого вам будет предложено ввести имя хранилища и пароль. После этого вы просто снова разветвляете оригинал.
источник
Если вы хотите сделать это без кли, вы можете сделать это полностью на веб-сайте Github.
New pull request
.Create new pull request
,источник
Чтобы автоматически синхронизировать ваш разветвленный репозиторий с родительским репозиторием, вы можете использовать приложение Pull на GitHub.
Обратитесь к Readme для более подробной информации.
Для расширенной настройки, в которой вы хотите сохранить изменения, внесенные в разветвленный репозиторий, обратитесь к моему ответу на аналогичный вопрос здесь .
источник