Zastanawiam się nad uruchomieniem małego projektu i chcę, aby jego wersjonowanie odbywało się za pomocą git.
Bitbucket wydaje mi się dobrą opcją z ich darmowym planem. Chcę go używać jako głównego narzędzia do pracy z git, ponieważ mają ładne narzędzia, takie jak interfejs WWW, klient Mac OS i tak dalej. Ale w celu zapewnienia lepszej ochrony przed przypadkowymi uszkodzeniami, które mogą być spowodowane korzystaniem z usług stron trzecich, chcę również zainstalować git na moim NAS jako drugą kopię zapasową repozytorium.
Teraz mam pytanie, czy można utworzyć repozytorium na dwóch różnych hostach, a następnie je zsynchronizować? Załóżmy na przykład, że raz w tygodniu aktualizuję repozytorium na moim serwerze NAS, aby pasowało do tego na Bitbucket. Następnie, na wypadek, gdyby coś się stało z Bitbucket, nadal będę mieć pełne repozytorium z pełną historią rozwoju na mojej lokalnej pamięci NAS.
Czy istnieje sposób na zaimportowanie istniejącego repozytorium z pełną historią do innej usługi git?
Myślę, że lustro jest tym, czego potrzebuję. Ten artykuł wydaje się dokładnie opisywać to, czego potrzebuję. I ten jeden , jak również.
Wierzę, że zrobi pełną kopię z pełną historią, a nawet automatycznie zatwierdzi nowe wersje do repozytoriów na obu hostach automatycznie.
Czy mam rację?
Odpowiedzi:
Tak, to właśnie piękno DVCS, takiego jak git. Możesz użyć dowolnej liczby różnych repozytoriów w tym samym stanie, co bitbucket lub github.
Nawet ty kopia lokalna (repozytorium na twoim komputerze) jest zwykle pełnym klonem zdalnego repozytorium.
Jedyne, co musisz zrobić, aby zsynchronizować wiele repozytoriów, to pobranie jednego (zwykle nazywanego początkiem lub wcześniejszym) i wypchnięcie do kopii zapasowych.
źródło
Oto sprawdzone rozwiązanie problemu: Automatyczne synchronizowanie 2 zdalnych repozytoriów Git
Prosty skrypt do synchronizacji 2 zdalnych repozytoriów Git
Szukałem w Internecie prostego skryptu, który można zsynchronizować. 2 zdalne repozytoria, ale nie mogłem znaleźć takiego skryptu, nawet jeśli wielu go szuka! Stworzyłem więc 2 proste repozytoria testowe i zacząłem testować i budować taki skrypt.
Co taki skrypt powinien zrobić?
Ogólnie rzecz biorąc, kroki do wykonania tego są proste: 1. Sklonuj pierwsze repozytorium 1. Dodaj drugie jako dodatkowe zdalne repozytorium 1. pobierz wszystko, co jest w drugim repozytorium 1. wepchnij zaktualizowane repozytorium lokalne na 2 zdalne repozytoria.
Pozostaje problem - jakie są prawidłowe przełączniki dla wszystkich powyższych poleceń git?
Oto jest ...
Skrypt gisp 2repos-sync.sh
UWAGA - ten skrypt nie rozwiązuje przypadków konfliktów między zawartością repozytorium!
źródło
Używam prywatnego GitLab do przechowywania wszystkich moich repozytoriów, więc mam tylko jedno źródło, z którego pcham i wyciągam podczas codziennego programowania.
Ale w przypadku projektów open source GitHub jest znacznie bardziej dynamiczną społecznością, więc jeśli chcę zaakceptować wkład społeczności do moich projektów, używam internetowego systemu zaczepów GitLab do pingowania uruchomionego serwera, który następnie aktualizuje moje publiczne repozytoria w GitHub.
To pozwala mi traktować GitHub jako kolejnego pilota, z którego mogę wyciągać, gdy ktoś wnosi wkład - a następnie scalam - nie-lokalnie, i istnieje przepływ, w jaki sposób wszystkie moje podstawowe i publiczne repozytoria rozpowszechniają zmiany.
źródło