Czasami przychodzi czas, by zmienić zdalny serwer naszego repozytorium, czy to z pobudek ekonomicznych, czy to bezpieczeństwa i prywatności, czy w końcu związanych z decyzją przełożonych. Jak się domyślacie wszystko jest do zrobienia. W tym konkretnym przypadku nie ma większych problemów, jednak trzeba pamiętać o kilku ważnych kwestiach.

Od czego uzależniony jest sukces operacji? Od tego byśmy nie utracili ani rewizji, ani gałęzi, ani tagów. Historia tego wszystko (komplet informacji) musi zostać przeniesiona do nowej zdalnej lokalizacji.

 

Przygodę czas zacząć

  1. Pobieramy informację o wszystkich gałęziach (w tym tagach) ze zdalnego repozytorium:
    git fetch origin

    Operacja ta jednak nie doprowadzi do stworzenia lokalnej kopii zdalnych gałęzi i powiązania ich. Musimy to zrobić ręcznie.

  2. W tym celu sprawdzamy aktualne informacje o gałęziach:
    git branch -a

    Jeśli na liście gałęzi mamy takie, które zaczynają się od remotes/origin/… oraz nie posiadamy ich lokalnych odpowiedników konieczne jest ich stworzenie wywołując dla każdej polecenie:

     git checkout -b brakujaca_galaz origin/brakujaca_galaz
  3. Jeśli po sprawdzeniu informacji o gałęziach wszystko jest w porządku możemy przejść do kluczowej operacji dodania nowej lokalizacji:
    git remote add current-origin nowa_lokalizacja
  4. Przesyłamy wszystkie informacje na serwer zdalny:
    git push --all current-origin
    git push --tags current-origin
  5. Usuwamy powiązanie z dotychczasowym zdalnym serwerem:
    git remote rm origin
  6. Teraz w celu uporządkowania nazewnictwa wystarczy zmienić nazwę repozytorium zdalnego:
    git remote rename current-origin origin

W tym momencie wszystko jest w najlepszym porządku. Jedyne co się zmieniło to zdalny serwer. Żadne dane nie zostały utracone, ale uwaga – koniecznie musisz zadbać, aby wszyscy deweloperzy zmienili serwer zdalny!