Co oznaczają te słowa w Git: Repository, fork, branch, clone, track?

130

Naprawdę nie mam jasności co do semantyki tutaj. Chodzi o kopie / warianty kodu + jednostki historii, ale nie jestem pewien, czy potrafię to powiedzieć. Czy ta logiczna struktura jest gdzieś wyjaśniona?

Eric Anderson
źródło
5
Polecam przeczytanie pierwszych kilku rozdziałów książki Pro Git ( progit.org/book ).
ewall
61
+1. Wiele samouczków git pokazuje, jak wykonywać określone zadania bez wyjaśniania, co oznaczają określone słowa lub jak działa git. Poproszenie o źródło, które dotyczy tego tematu, jest uzasadnione.
Daniel Stutzbach
14
Chciałbym móc dać +1 komentarzowi Daniela więcej. Chociaż znaczenie niektórych terminów (np. Repozytorium) powinno być oczywiste, ich związek nie zawsze (rozgałęzienie vs. rozwidlenie), a prawdziwe znaczenie jest łatwo błędnie zinterpretowane przez kogoś przyzwyczajonego do scentralizowanego systemu VCS. Poza tym spójrz na Pro Git "co to jest gałąź?" sekcja - czy podstawowy użytkownik naprawdę chce wiedzieć o blobach i drzewach, czy po prostu chce wiedzieć jakościowo, czym jest gałąź?
Cascabel
1
@DanielStutzbach można zgłaszać uwagi dotyczące rzeczy, które nie są jasne w książce. (Nie znam właściwej terminologii, aby to powiedzieć). Zrobiłem to, powiedziałem, że książka musi definiować, czym jest repozytorium. Zgadzam się, że dość trudno jest uzyskać materiał koncepcyjny od ludzi, którzy bardzo dobrze coś rozumieją. Ta książka (obecnie) mówi o bazach danych bez definiowania, czym one są w tym kontekście i nie mówi nic o tym, czym są repozytoria.
user34660

Odpowiedzi:

146

Repozytorium to po prostu miejsce, w którym przechowywana jest historia Twojej pracy. Często znajduje się w .gitpodkatalogu Twojej kopii roboczej - kopii ostatniego stanu plików, nad którymi pracujesz.

Aby rozwidlić projekt (pobrać źródło z czyjegoś repozytorium w określonym momencie i zastosować do niego własne rozbieżne zmiany), należy sklonować zdalne repozytorium, aby utworzyć jego kopię, a następnie wykonać własną pracę w swoim lokalnym repozytorium i zatwierdzać zmiany.

W repozytorium masz gałęzie, które są efektywnie rozwidleniami we własnym repozytorium. Twoje gałęzie będą miały zatwierdzenie przodka w twoim repozytorium i będą odbiegać od tego zatwierdzenia wraz z twoimi zmianami. Możesz później scalić zmiany oddziału. Gałęzie umożliwiają jednoczesną pracę nad wieloma różnymi funkcjami.

Możesz także śledzić poszczególne oddziały w zdalnych repozytoriach. Pozwala to na pobieranie zmian z gałęzi innej osoby i łączenie ich we własną gałąź. Może to być przydatne, jeśli Ty i Twój znajomy wspólnie pracujesz nad nową funkcją.

W Internecie jest wiele świetnych książek git. Zapoznaj się z ProGit i Git Magic, aby rozpocząć, a także z oficjalnymi samouczkami i książką społeczności.

nfm
źródło
Oczywiście czytanie podręczników F i tutoriali ma fundamentalne znaczenie. Ale to wydaje mi się świetne podsumowanie całej sprawy. Bardzo cenione!
brasofilo
Zauważ, że możesz przełączyć swój lokalny katalog roboczy do nowej gałęzi ("git checkout <nowy_branch>"). W tym przypadku pliki twojego lokalnego katalogu roboczego są ZASTĄPIANE przez zawartość gałęzi, do której się przełączasz. Ale nie tracisz swojej pracy: Git przechowuje wszystkie zatwierdzone zmiany („git commit”), które wprowadziłeś w poprzedniej gałęzi w „bazie danych” Gita (ukryty folder .git) i pozwoli ci przełączyć się z powrotem na twoje pliki.
KrisWebDev
3
Myślę, że wymaga to specjalnej wzmianki, że w przeszłości, niezależnie od tego, z którego systemu VCS korzystałeś, rozwidlanie i rozgałęzianie były uważane za dwie odrębne rzeczy. Rozgałęzienie zostało uznane za korzystne i dorozumiane porozumienie między deweloperami. Rozwidlenie było poważniejsze, ponieważ sugerowało, że programiści pracujący nad projektem nie zgadzali się w niektórych kwestiach i postanowili rozstać się. Udane rozwidlenia były następnie zwykle łączone z powrotem w jeden projekt później, gdy obie strony doszły do ​​porozumienia. Od tego czasu Git (i GitHub) zatarły te terminy i oba terminy zasadniczo reprezentują ten sam pomysł, ale na różne sposoby.
redteam316
Czyli repozytorium nie zawiera plików projektu? Mówisz o miejscu, w którym przechowywana jest historia Twojej pracy . Czy to wszystko? Tylko historia plików, ale nie same pliki?
user34660
13

Odpowiem na swoje pytanie za pomocą RTFM.

Ale przeczytaj dobrą instrukcję. Jak ujął to autor:

„Wyciągam z tego wniosek, że naprawdę możesz używać Git tylko wtedy, gdy rozumiesz, jak działa Git. Samo zapamiętanie, które polecenia należy uruchamiać w jakim czasie, zadziała na krótką metę, ale to tylko kwestia czasu, zanim utkniesz lub, co gorsza, coś zepsujesz.

„Połowa istniejących zasobów w Git, niestety, przyjmuje właśnie takie podejście: przeprowadzają Cię przez polecenia, które polecenia należy uruchomić i kiedy, i oczekują, że powinieneś sobie poradzić, jeśli po prostu naśladujesz te polecenia. Druga połowa omawia wszystkie koncepcje, ale z tego, co widziałem, wyjaśniają Git w sposób, który zakłada, że ​​wiesz już, jak działa Git ”.

Eric Anderson
źródło
Wydaje się, że to wprowadzenie zostało przeniesione na sbf5.com/~cduan/technical/git . Oryginalny adres URL nadal działa.
Eric Anderson
1
To prawda w kontekście. Jeśli chcesz być produktywny od razu lub naprawdę po prostu sprawdzić kod, nie ma nic złego w tym, jak działa git. Samouczki są w porządku. W ten sposób wkroczyłem do gita. Jeśli jednak chcesz być bardziej zaawansowany, np. Tworzyć gałęzie, rozwidlać, rebase i inne bardziej zaawansowane zadania, musisz wiedzieć, jak działa git, zwłaszcza jeśli twoje tło jest w scentralizowanej kontroli źródła.
Phil
3

Ten GoogleTechTalk to fantastyczne wprowadzenie do Git, dzięki któremu dowiesz się, co dzieje się za kulisami podczas nauki języka. Został on przekazany przez bardzo wczesnego współpracownika Gita, który wygłosił tę prelekcję w 2007 roku jako wprowadzenie do Git. Jeśli obejrzysz to przemówienie, nie tylko będziesz wiedział, czym jest każde słowo, jak repozytorium, widelec, gałąź itp., Ale także będziesz wiedział, co dzieje się za kulisami, gdy każde z nich jest tworzone, łączone itp.

Adres jest długi, ale zawiera wiele informacji. Kontrastuje to również Git z innymi systemami kontroli wersji, dzięki czemu masz wgląd w to, dlaczego Git został stworzony tak, jak był i jakie są jego przewagi porównawcze w porównaniu z innymi systemami kontroli. Chociaż przemówienie jest stare, bardzo pomocne jest rozpoczęcie pracy. Obejrzałbym to, zanim wskoczyłem do podręczników. Wierzę, że dzięki temu sprawy będą miały znacznie więcej sensu.

Matt
źródło