То, как я это сделал, больше похоже на Чепнера, чем на Тим, но я расскажу о том, что я на самом деле делал.Обратите внимание, что, как сказал Чепнер, это, вероятно, будет работать с любой комбинацией удаленных сервисов git, поэтому, если вы не используете BitBucket или GitHub, просто сделайте то же самое с URL-адресами других удаленных сервисов git.
Допущениядля этих шагов (которые были верны в моей ситуации):
локальный репозиторий BitBucket обновлен со всеми его последними коммитами
в репозитории была только основная ветвь (вообще не было подветви)
новый GitHub фиксирует отредактированные файлы, отличные от новых BitBucket, (поэтому никакой вероятности конфликтов слияния нет).
Смотрите "Что делать по-другому", чтобы узнать, как справиться с этим, если эти предположения не соответствуют действительности.
tl; dr ДобавленоGitHub, удаленный в локальный репозиторий BitBucket, извлек коммиты GitHub и перенес локальное репо в GitHub.
Точный шаг за шагом из того, что я сделал:
Перейти в локальный репозиторий BitBucket.
Добавить пульт в точкуна репозиторий GitHub.
git remote add github <url GitHub repo>
Это можно проверить с помощью git remote -v
.Это выведет все удаленные URL, которые используются в этом локальном хранилище.Должно быть четыре записи, две выборки / передачи для BitBucket, две выборки / передачи для GitHub:
$ git remote -v
origin <url BitBucket> (fetch)
origin <url BitBucket> (push)
github <url GitHub> (fetch)
github <url GitHub> (push)
Выборка коммитов GitHub.Я сделал это:
git fetch github
Теперь в вашем локальном репозитории есть все коммиты из репозитория GitHub.
Нажмите коммиты влокальный репозиторий в удаленном репозитории GitHub
git push github master
Теперь пульт GitHub имеет свои оригинальные коммиты (с момента их получения на шаге 3) и коммиты BitBucket (которые присутствовали в локальном репозитории)репозиторий для начала).
Удалите удаленный URL BitBucket из репозитория ...
git remote remove origin
... и переименуйтеУдаленный URL GitHub на origin
:
git remote rename github origin
Теперь все в порядке с миром.
Что делать по-другому:
Use git fetch --all
Он будет получать новые коммиты с каждого удаленного URL, который вы сохранили.Это заменило бы первое предположение, которое я использовал выше (что репозиторий BitBucket имел все свои последние коммиты).
У вас есть несколько веток для передачи.
Из моего понимания, команда git fetch
будет сбрасывать коммиты из всех ветвей на шаге 3.
Чтобы поднять результаты обратно, из документации вы можете сделать git push github --all
, чтобы отправить изменения, внесенные в каждую ветку.
У вас есть конфликтующие коммиты
Вам, вероятно, придется сделать git merge
перед нажатием.