Jaka jest różnica między klonem git a kasą?


Odpowiedzi:


337

Strona podręcznika do kasy: http://git-scm.com/docs/git-checkout

Strona podręcznika dla klonowania: http://git-scm.com/docs/git-clone

Podsumowując, klon służy do pobierania repozytoriów, których nie masz, kasa służy do przełączania się między oddziałami w repozytorium, które już masz.

Uwaga: dla tych, którzy mają doświadczenie w SVN / CVS i są nowi w Git, odpowiednikiem git cloneSVN / CVS jest checkout. To samo sformułowanie różnych terminów jest często mylące.


41
checkoutmożna też przyzwyczaić się do innych rzeczy, takich jak nadpisywanie pliku w kopii roboczej wersją tego pliku z innej wersji.
— svick

8
a kiedy używasz „pull” vs „checkout”?
— Kokodoko

27
pull to połączenie plus połączenie, kasa to lokalna operacja, która działa tylko na danych, które już zostały pobrane. Więc to wcale nie jest jak kasa SVN.
— August Lilleaas,

13
Pochodząc ze świata SVN, byłem również zdezorientowany. Wow ... co za bałagan. W idealnym świecie zmusiłbym każdego producenta systemu kontroli źródła do używania tych samych warunków.
— Zoltán Tamási,

5
Fork jest terminem github i nie jest związany z samym git.
— August Lilleaas

123

Klon git służy do pobierania repozytoriów ze zdalnego serwera git.

git checkout polega na sprawdzeniu żądanego statusu repozytorium (np. oddziałów lub poszczególnych plików).

Na przykład, jesteś obecnie w gałęzi master i chcesz przejść do gałęzi developerskiej.

git checkout develop_branch

Np. Chcesz przejść do określonego stanu określonego pliku

git checkout commit_point_A -- <filename>

Oto dobre odniesienie do nauki Git, które pozwala łatwiej zrozumieć.


20
„ze zdalnego serwera git” - serwer nie musi być zdalny. git clonebędzie również działać z lokalnymi repozytoriami.
— ZESTAW

1
Dzięki za link do wizualnego odniesienia do git!
— David Pointer,

@Kit Ho: Link jest w porządku jako odniesienie, ale nie jest zbyt pomocny dla kogoś z podstawowymi pytaniami o git, jak osoba powyżej. Jak sam artykuł mówi: „Gdy dowiesz się trochę o tym, jak działa git, ta strona może wzmocnić twoje zrozumienie”
— SN

Definicje kołowe nie są tak pomocne. Słowo „pobierz” użyte do opisania klonu jest użyteczne i dodaje znaczenia, ale wyrażenie „kasa jest do kasy ...” nie dodaje znaczenia ani nie pomaga odróżnić różnicy między tymi dwiema operacjami.
— C Perkins

11

Jedną z rzeczy, na którą należy zwrócić uwagę, jest brak „kopii” w git. Jest tak, ponieważ masz już pełną kopię w lokalnym repozytorium - Twoje lokalne repozytorium jest jednym clonez wybranych repozytoriów nadrzędnych. Więc masz skutecznie osobistycheckout od wszystkiego , bez narażania jakiś „blokadę” na tych plików w repo odniesienia.

Git zapewnia wartości skrótu SHA1 jako mechanizm sprawdzania, czy posiadana kopia pliku / drzewa katalogów / zatwierdzania / repo jest dokładnie taka sama jak kopia używana przez osobę, która może zadeklarować rzeczy jako „Master” w hierarchii zaufania. Pozwala to uniknąć tych wszystkich „blokad”, które powodują, że większość systemów SCM dusi się (przy zwykłych problemach z prywatnymi kopiami, dużymi scaleniami i bez rzeczywistej kontroli lub zarządzania kodem źródłowym ;-)!


4
Pytanie nie wspomina o blokadach i należy obecnie domyślnie założyć, że dana osoba nie zna tej koncepcji, więc różnice w stosunku do starych VCS powinny być wyjaśnione tylko wtedy, gdy zostanie o to wyraźnie poproszony.
— wRAR

6

Po prostu git checkout ma 2 zastosowania

  1. Przełączanie między istniejącymi oddziałami lokalnymi, takimi jak git checkout <existing_local_branch_name>
  2. Utwórz nową gałąź z bieżącej gałęzi, używając flagi -b. Załóżmy, że jeśli jesteś w gałęzi master, to git checkout -b <new_feature_branch_name>utworzy nową gałąź z zawartością master i przejdzie do nowo utworzonej gałęzi

Możesz znaleźć więcej opcji na oficjalnej stronie


Miły. Ta -bopcja jest niesamowita, która tworzy nowy oddział lokalny i sprawdza go w tym samym czasie za pomocą jednego polecenia. Pokochałem to!
— RBT

2

checkout może być użyty w wielu przypadkach:

Pierwszy przypadek : przełączanie między oddziałami w lokalnym repozytorium Na przykład: git checkout exists_branch_to_switch

Możesz także utworzyć nowy oddział i przełączać się w tym przypadku za pomocą -b

git checkout -b new_branch_to_switch

Drugi przypadek : przywróć plik z x rev

git checkout rev file_to_restore ...

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.