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.

August Lilleaas
źródło
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ć.

Zestaw Ho
źródło
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 ;-)!

Philip Oakley
źródło
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

Khader MA
źródło
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 ...

Goms
źródło