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?
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?
Odpowiedzi:
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
.ssh/config
plik jest kluczem do osiągnięcia tej konfiguracji. Dodaj a Host github.com
i a Host bitbucket.org
, aby określić, którego IdentityFile
uż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.
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
Kilka ŁATWYCH rozwiązań.
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".
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 .