Gałęzie w usłudze Git

Ukończone

Jesteś deweloperem internetowym, który próbuje dowiedzieć się więcej o usłudze Git dla swojego zadania. Udało Ci się utworzyć prostą witrynę internetową HTML i CSS, która zawiera zdjęcia kotów, aby ćwiczyć swoje umiejętności w usłudze Git i pracujesz nad nią ze znajomymi, Alice i Bobem.

W miarę postępu projektu zdajesz sobie sprawę, że chcesz, aby wszyscy mogli pracować nad więcej niż jednym zadaniem jednocześnie bez konieczności pracy innej osoby. Potrzebujesz sposobu na oddzielenie pracy wszystkich użytkowników, więc nowe programowanie nie jest w drodze istniejących poprawek błędów. W usłudze Git gałęzie ułatwiają taką współpracę.

Praca wykonywana w gałęzi nie musi być udostępniona i nie zakłóca pracy wykonywanej w innych gałęziach. Gałęzie umożliwiają utrzymywanie zatwierdzeń powiązanych ze sobą i odizolowanych od innych prac, dzięki czemu zmiany wprowadzone w temacie są łatwe do przejrzenia i śledzenia.

Nowoczesne tworzenie oprogramowania odbywa się niemal całkowicie w gałęziach. Celem jest utrzymanie czystej gałęzi głównej do momentu, aż praca będzie gotowa do zaewidencjonowania. Następnie wypchniesz zmiany do gałęzi głównej lub jeszcze lepiej prześlij żądanie ściągnięcia, aby scalić zmiany.

Zaletą usługi Git w przypadku wcześniejszych systemów kontroli wersji (VCS) jest to, że dzięki usłudze Git tworzenie gałęzi jest niezwykle szybkie; oznacza zapisanie 40-znakowego skrótu do pliku w obszarze .git/heads. Przełączanie gałęzi jest również szybkie, ponieważ usługa Git przechowuje całe pliki i rozpakowuje je zamiast próbować odtworzyć je z list zmian. Scalanie w usłudze Git nie jest tak proste, ale jest proste i często całkowicie automatyczne.

Dowiedz się, czym są gałęzie, do czego służą i jak działają.

Struktura gałęzi i nazewnictwo

Gałąź to po prostu łańcuch zatwierdzeń, które odgałęzieją się od głównej linii programowania, podobnie jak gałąź na drzewie.

Jeśli przechodzisz do usługi Git z innej platformy VCS, możesz być przyzwyczajony do nieco innej terminologii. Podwersja VCS nazywa swoją domyślną gałąź trunk, a usługa Git nazywa ją master. Możesz zmienić nazwę gałęzi domyślnej, tak jak można zmienić nazwę dowolnej innej gałęzi. W tym module nadamy nazwę gałęzi maindomyślnej .

Gałąź zwykle rozpoczyna się od zatwierdzenia w gałęzi domyślnej; w tym przypadku na .main Gałąź zwiększa oddzielny łańcuch historii podczas dodawania zatwierdzeń. W końcu zmiany w gałęzi zostaną scalone z powrotem do mainelementu . W tym module dowiesz się, jak wykonywać zatwierdzenia w gałęzi i scalać je z gałęzią main .

Załóżmy, że odgałęziesz main gałąź. Poniżej przedstawiono sposób wizualizacji tego, co się dzieje:

Diagram przedstawiający relację gałęzi głównej i gałęzi lokalnych.

Każda wielka litera na diagramie reprezentuje zatwierdzenie. Gałęzie mają nazwy takie jak add-authentication i fix-css-bug, a gałęzie mogą mieć własne gałęzie. Ostatecznym celem jest pozwolić deweloperom robić to, co muszą robić bez przechodzenia na siebie nawzajem, a w końcu z gałęzią główną, która reprezentuje najlepsze wysiłki wszystkich zaangażowanych.

Tworzenie i przełączanie gałęzi (git branch i git checkout)

Typowym powodem tworzenia nowej gałęzi jest wprowadzanie zmian istniejącej funkcji. Gałąź służąca do tego celu zwykle nazywana jest gałęzią tematu lub gałęzią funkcji.

Nową gałąź można utworzyć przy użyciu git branch polecenia . Przełączanie między gałęziami przy użyciu git checkout polecenia .

Napotkano już checkout metodę zastępowania plików w drzewie roboczym przez pobranie ich z indeksu. Bez ścieżek na liście checkout argumentów aktualizuje wszystko w drzewie roboczym i indeksie, aby pasować do określonego zatwierdzenia — w tym przypadku szef gałęzi.

Scalanie gałęzi (git merge)

Po zakończeniu pracy w gałęzi, być może funkcji lub poprawki błędów, należy scalić tę gałąź z powrotem do gałęzi głównej. Możesz użyć git merge polecenia , aby scalić określoną gałąź z bieżącą gałęzią.

Jeśli na przykład pracujesz w gałęzi o nazwie my-feature, przepływ pracy będzie wyglądać następująco:

# Switch back to the main branch
git checkout main

# Merge my-feature branch into main
git merge my-feature

Po użyciu tych poleceń i rozwiązaniu wszelkich konfliktów scalania (opiszemy konflikty scalania w dalszej części tego modułu), wszystkie zmiany z my-feature gałęzi będą miały wartość main.