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?

erogol
źródło
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 [email protected]: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
Denis Kniazhev
źródło
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
31

Tak, możesz to zrobić. Nie musisz naciskać dwa razy, ale tylko raz, aby wypchnąć do obu zdalnych repozytoriów. Miałem ten sam problem wcześniej, więc napisałem, jak to zrobić tutaj. Git: Push to / Pull from both Github and Bitbucket

Kevin Lee
źródło
2
Dobry post! Byłoby dobrze, gdybyś mógł, zamieścić tutaj lato.
OneHoopyFrood
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://[email protected]/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://[email protected]/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 .

Ahmad Awais
źródło