Миграция проекта с github на bitbucket

Так уж сложилась жизнь что мне пришлось делать миграцию проекта с github на bitbucket. Причин может быть великое множество, например то, что проект github.com собирается покупать компания Microsoft (информация на июнь 2018 года, когда вы это читаете, то причина может быть уже не актуальной). Далее я предлагаю подробную инструкцию на тему "Миграция проекта с github на bitbucket", которую опробовал на своем репозитории.

Давайте посмотрим, какой репозиторий у нас есть прямо сейчас и что нам о нем известно:

$ git remote -v
origin	https://github.com/laravel/homestead.git (fetch)
origin	https://github.com/laravel/homestead.git (push)

Команда git remote -v говорит нам, что для fetch у нас есть репозиторий под названием origin, а так же для push у нас есть репозиторий origin. После названия репозитория идет адрес.

Команда git remote достаточно гибкая и позволяет получать более детальную информацию по репозиторию. Например, мы можем попросить наш локальный гит сказать нам, какие репозитории у него вообще есть:

$ git remote show
origin

Слово origin ничем не отличается от любых других слов. Так исторически сложилось что разработчики гита использовали это слово (original). На самом деле origin играет роль синонима (alias) для моего репозитория https://github.com/laravel/homestead.git. Когда вы пишите origin вы подразумеваете git@github.com:laravel/homestead.git.

Давайте переименуем origin во что-то еще. Например:

$ git remote rename origin github

Обратите внимание, мы опять использовали команду git remote. В качестве аргументов мы попросили переименовать (rename) origin в github.

Давайте еще раз посмотрим, какие репозитории у нас есть, после переименования:

$ git remote show
github

Отлично. Теперь давайте добавим в наш гит сведения о еще одном репозитории:

$ git remote add origin https://nickname@bitbucket.org/nickname/laravel.git

Вместо nickname необходимо подставить свой ник на bitbucket.org.

Так как origin мы переименовали в github, мы можем использовать это слово для названия другого репозитория. Мы добавили origin по адресу git@bitbucket.org:nickname/laravel.git. Хорошо, что сейчас мы имеем:

$ git remote show
github
origin

Давайте посмотрим на новый origin внимательнее используя команду git remote с аргументом show:

$ git remote show origin
* remote origin
  Fetch URL: https://nickname@bitbucket.org/nickname/laravel.git
  Push  URL: https://nickname@bitbucket.org/nickname/laravel.git
  HEAD branch: (unknown)

Теперь нужно сделать:

git push -u origin master

чтобы закинуть новую ветку в мастер.

Теперь наш git, по умолчанию использует другой origin. Отлично, у нас теперь 2 репозитория. Если мы будем писать команды типа git push или git pull мы будем использовать origin. Если вдруг нам понадобится работать с github, то теперь мы должны указывать это явно. Например

$ git pull github

Для тех, кто не хочет разбираться с командами git или считает, что это не интересно, откройте в корне проекта файл .git/config и найдите там секцию [remote "origin"], как в примере ниже:

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:laravel/homestead.git
fetch = +refs/heads/:refs/remotes/origin/

Измените адрес с git@github.com:laravel/homestead.git на git@bitbucket.org:nickname/laravel.git.

После того, как вы смените origin, вам 1 раз, в каждой своей ветке, которую вы хотите переместить в новый origin, необходимо выполнить push с дополнительным аргументом:

$ git push --set-upstream origin <название-текущей-вашей-ветки>

Аргумент --set-upstream скажет вашему гиту, что отныне, у вашей ветки новый апстрим. После этого, можно удалять из своего гита сведения о старом репозитории (если вы использовали команду git remote вместо редактирования конфига):

$ git remote rm github

Данная инструкция поможет не только, если вам необходима миграция проекта с github на bitbucket, но и для миграции проекта с github на gitlab и в любую другую сторону.

Если есть какие-то дополнения, то прошу в комментарии.

Информация
Автор webmancer Нравится 0
Рейтинг 1 Не нравится 0
Голосов 1 Прочитали 1
Дата 2018-06-06 09:00:00 В избранном 0
Ваша реакция

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

Зарегистрироваться

Авторизоваться

На рекомендательном сервисе WEBmancer.Org только зарегистрированные пользователи могут комментировать и оставлять рецензии. Авторизованный пользователь так же может ставить отметки книгам, фильмам и другим постам. Вести учет прочитанных книг и просмотренных фильмов. Добавлять посты в избранное и иметь к ним быстрый доступ.