2011-08-20 12 views
22

Nie jestem zaznajomiony z terminologią, praktykami i procedurami kontroli wersji.Wykonaj lokalną kopię zdalnego repozytorium git

Oto, co chcę zrobić:

  1. Chcę pobrać folder z repozytorium git z Internetu. Czy klonowanie jest właściwą drogą? Czy klonowanie nie będzie przechowywać niepotrzebnych plików meta-danych? Czy istnieje sposób na zrobienie "czystego" pobierania?

  2. Chcę skonfigurować lokalne repozytorium zawierające ten folder, w którym mogę teraz używać kontroli wersji. Oznacza to, że gdy wykonuję zatwierdzenie, moje lokalne repozytorium jest aktualizowane.

  3. Wreszcie, chcę, aby to lokalne repozytorium było dostępne w sieci lokalnej, aby móc je pobrać z dowolnego innego komputera w sieci LAN.

Odpowiedz

19
  1. Klonowanie jest właściwą drogą, ale spowoduje pobranie wszystkich katalogów zdalnego repozytorium Git.
    Zobacz git clone of Git Reference.
  2. Polecenie clone utworzy repozytorium z działającym drzewem, które już zostało wyewidencjonowane, i .git reprezentujące pełne repozytorium.
  3. Musisz mieć co najmniej jedną wspólną ścieżkę, aby inna mogła klonować/ciągnąć/pchać twoje repozytorium.
    Zobacz git local protocol.

Jeśli nie są zaznajomieni z tymi operacjami, polecam Ci wykonaj proste wiczenia zaproponowane przez git immersion.

1

Tak, "git clone" jest drogą do zrobienia. W ten sposób uzyskasz wszystkie dane i pozwolisz na wykonanie commitów. Tak długo, jak nowe repozytorium jest widoczne w sieci LAN, inne komputery również powinny móc je klonować.

3

Nie można pobrać pojedynczych plików lub folderów z repozytorium git, ponieważ git śledzi pełny stan projektu jako całości, a nie tylko pojedyncze pliki. Istnieje możliwość sklonowania tylko ograniczonego zestawu poprawek (zwanych płytkimi klonami) z odległego repozytorium, ale takie klony są ograniczone do ograniczonego zestawu operacji, na przykład nie można klonować z płytkiego klonu, lub wypchnąć coś z takie repozytorium.

Jeśli przeszkadza ci rozmiar repozytorium git, możesz git gc zrobić reorganizację git bazy danych obiektów, co czasem może poprawić rozmiar.

Gdy chcesz mieć lokalnej pamięci podręcznej, można użyć git clone --mirror $REMOTE_URL stworzyć klona, ​​który

Możesz sklonować nowe repozytorium z tego lokalnego repozytorium pamięci podręcznej i albo wepchnąć bezpośrednio do repozytorium (musisz git remote add upstream $REMOTE_URL w swojej kopii roboczej, aby dodać link do repozytorium, potem możesz git push upstream), albo możesz wcisnąć lokalne repozytorium pamięci podręcznej, a następnie przejdź do repozytorium.

2

Podczas gdy git clone jest prawo do kroków 1 & 2, może zaistnieć potrzeba przeczytania kilku książek git, np. Książka postępu/wspólnoty itp., Aby uzyskać właściwy aromat najlepszego podejścia do kroku 3 i filozofię git.

Git, jako rozpowszechniany VCS, usilnie stara się uniknąć "pojedynczego centralnego repozytorium", które może sugerować "lokalne repozytorium dostępne w sieci lokalnej". Możesz mieć nagie repo w sieci, co pozwala wielu na wypychanie/wyciąganie z niego, ale to nie jest to samo, co posiadanie lokalnego repo w sieci, z katalogiem roboczym i tylko ty używając go jako jeśli był to dysk lokalny.

+0

OK. Chcę pracować nad moim projektem z dwóch różnych maszyn i chcę, aby pozostały zsynchronizowane. Więc powinienem umieścić repozytorium na jednej z maszyn (np. Podstawowej), sklonować je na drugiej maszynie (np. Wtórnej), dodać link "zdalny" od podstawowego do pomocniczego, a następnie popychać i ciągnąć, aby zachować synchronizację. Czy to jest sposób, aby o tym poradzić? – AnkurVj

+0

Jeśli to tylko ty, i pracujesz rozłącznie z dwóch maszyn (tj. Nigdy nie używasz obu jednocześnie aka zalogowanych), to rozsądne jest, aby repo na dysku sieciowym, i w ten sposób jest zawsze zsynchronizowany , bez względu na to, z którego logujesz się. Oczywiście spowoduje to opóźnienia w sieci i trzeba zapewnić kopie zapasowe oraz ich bezpieczeństwo, ale pozwoli uniknąć fagowania z nieskończonymi klonami/pushami/ciągami. –

Powiązane problemy