Jak jednocześnie korzystać z Bitbucket i GitHub w jednym projekcie?


95

Mam jedno repozytorium, które chcę przesłać do Bitbucket i GitHub. Bardzo ważne jest, aby moje repozytorium było hostowane przez oba.

Czy istnieje sposób, aby to zrobić w Git?


4
Wydaje się to bardzo przydatne. Zwłaszcza, gdy jedno repozytorium nie działa. W tej chwili Bitbucket nie działa i praktycznie nie jestem w stanie wykonywać swojej pracy.
imranal

Odpowiedzi:


120

Możesz używać wielu zdalnych repozytoriów z git. Ale myślę, że będziesz musiał osobno wcisnąć dwa piloty.

Na przykład, jeśli Twój projekt wskazuje obecnie na github, możesz zmienić nazwę obecnego zdalnego repozytorium na github:

$ git remote rename origin github

Następnie możesz dodać kolejne zdalne repozytorium, powiedz bitbucket:

$ git remote add bitbucket git@bitbucket.org:your_user/your_repo.git

Teraz, aby wypchnąć zmiany do odpowiedniej gałęzi na github lub bitbucket, możesz zrobić to:

$ git push github HEAD
$ git push bitbucket HEAD

Ta sama zasada dotyczy ściągania: musisz określić, z którego pilota chcesz wyciągać:

$ git pull github your_branch
$ git pull bitbucket your_branch

9
Uwaga dla przyszłych odwiedzających, twój .ssh/configplik jest kluczem do osiągnięcia tej konfiguracji. Dodaj a Host github.comi a Host bitbucket.org, aby określić, którego IdentityFileużyć. Wtedy nie otrzymasz błędów odmowy uprawnień podczas próby zamiany między bitbucket i github. Mam nadzieję, że to komuś pomoże.
Ultimater


28

Kilka ŁATWYCH rozwiązań.

Wiele pilotów zostało wciśniętych (i pobranych) niezależnie

Jest to najłatwiejsze do opanowania, ale najbardziej wymagające w utrzymaniu.

Zaczynamy od dodania naszego nowego pilota:

$ cd myproject 
$ git remote add bitbucket ssh://git@bitbucket.org/user/myproject.git 
$ git push bitbucket master

Prosto, nie? Oprócz oczywiście za każdym razem, gdy wprowadzamy jakiekolwiek zmiany, musimy naciskać zarówno na nasze pierwotne „źródło”, jak i na nasz nowy zdalny „bitbucket”:

$ git push origin master
$ git push bitbucket master

Nie jest to ogromne obciążenie, ale jestem pewien, że z czasem będzie to drażnić. Możesz też utworzyć ʻalias gpob = "git push origin master && git push bitbucket master".

Pojedynczy pilot z wieloma adresami URL przekazywanymi (i pobieranymi) kolejno

Za pomocą tej metody dodamy dodatkowy adres URL do naszego istniejącego zdalnego „źródła”:

$ cd myproject
$ git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git
$ git push origin master
Everything up-to-date
Everything up-to-date

Dużo mniej wysiłku!

Oczywiście srebrna podszewka ma chmurę iw tym przypadku jest tak, że chociaż możemy jednocześnie przesyłać do wielu adresów URL, możemy pobierać tylko z oryginalnego „źródła” (możesz to zmienić, ale to jest poza zakresem tego postu ).

Wreszcie, aby zobaczyć, z którego pilota zostanie pobrany:

$ git remote -v show

Również o tym pisałem na blogu .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.