Close

Gałąź Git

Ten dokument zawiera szczegółowe omówienie polecenia git branch i ogólnego modelu rozgałęzień Git. Rozgałęzianie to funkcja dostępna w większości nowoczesnych systemów kontroli wersji. Rozgałęzianie w innych systemach kontroli wersji może być kosztowną operacją zarówno pod względem czasu, jak miejsca na dysku. W Git gałęzie są częścią Twojego codziennego procesu tworzenia oprogramowania. Gałęzie Git są w rzeczywistości wskaźnikami do migawki zmian. Jeśli chcesz dodać jakąkolwiek nową funkcję lub naprawić dowolny błąd, tworzysz nową gałąź, aby hermetyzować zmiany. Utrudnia to scalanie niestabilnego kodu z główną bazą kodu i daje szansę na oczyszczenie historii funkcji przed scaleniem jej z gałęzią główną.


Ten dokument zawiera szczegółowe omówienie polecenia git branch i ogólnego modelu rozgałęzień Git. Rozgałęzianie to funkcja dostępna w większości nowoczesnych systemów kontroli wersji. Rozgałęzianie w innych systemach kontroli wersji może być kosztowną operacją zarówno pod względem czasu, jak miejsca na dysku. W Git gałęzie są częścią Twojego codziennego procesu tworzenia oprogramowania. Gałęzie Git są w rzeczywistości wskaźnikami do migawki zmian. Jeśli chcesz dodać jakąkolwiek nową funkcję lub naprawić dowolny błąd, tworzysz nową gałąź, aby hermetyzować zmiany. Utrudnia to scalanie niestabilnego kodu z główną bazą kodu i daje szansę na oczyszczenie historii funkcji przed scaleniem jej z gałęzią główną.

Gałąź Git
Okno konsoli
materiały pokrewne

Zaawansowany dziennik Git

Logo Bitbucket
POZNAJ ROZWIĄZANIE

Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud

Na powyższym diagramie pokazano repozytorium z dwoma izolowanymi liniami programowania, jedną dla małej funkcji, i jedną dla funkcji, której programowanie będzie trwać dłużej. Rozwijając je w gałęziach, można nie tylko pracować nad nimi równolegle, ale zapobiegać dodawaniu wątpliwego kodu do gałęzi głównej.

Implementacja kryjąca się za gałęziami Git jest znacznie lżejsza niż inne modele systemów kontroli wersji. Zamiast kopiować pliki z katalogu do katalogu Git przechowuje gałąź jako odwołanie do commitu. W tym sensie gałąź reprezentuje końcówkę serii commitów — nie jest kontenerem dla commitów. Historia gałęzi jest ekstrapolowana poprzez relacje commitów.

Podczas czytania pamiętaj, że gałęzie Git nie są podobne do gałęzi SVN. Gałęzie SVN służą tylko do uchwycenia sporadycznych wysiłków związanym programowaniem na dużą skalę, natomiast gałęzie Git są integralną częścią codziennego przepływu pracy. Poniższa zawartość rozwinie temat wewnętrznej architektury rozgałęzienia Git.

Jak to działa


Gałąź reprezentuje niezależną linię programowania. Gałęzie służą jako warstwa abstrakcji dla procesu edycji, przechowywania i zatwierdzania. Można je traktować jako sposób na zażądanie zupełnie nowego katalogu roboczego, strefy przejściowej i historii projektu. Nowe commity są rejestrowane w historii dla bieżącej gałęzi, co prowadzi do powstania podziału (fork) w historii projektu.

Polecenie git branch umożliwia tworzenie, dodawanie list, zmienianie nazw i usuwanie gałęzi. Nie pozwala natomiast na przełączanie się między gałęziami ani ponowne scalanie podzielonej historii. Z tego powodu polecenie git branch jest ściśle zintegrowane z poleceniami git checkout i git merge.

Często używane opcje


git branch

Wyświetla listę wszystkich gałęzi w repozytorium. Jest jednoznaczne z poleceniem git branch --list.

git branch <branch>

Tworzy nową gałąź o nazwie <branch>. Nie powoduje to wyewidencjonowania nowej gałęzi.

git branch -d <branch>

Usuwa określoną gałąź. Jest to „bezpieczna” operacja, ponieważ Git uniemożliwia usunięcie gałęzi, która ma niescalone zmiany.

git branch -D <branch>

Wymusza usunięcie określonej gałęzi, nawet jeśli ma niescalone zmiany. Jest to polecenie, którego należy użyć, aby trwale porzucić wszystkie commity związane z określoną linią programowania.

git branch -m <branch>

Zmienia nazwę bieżącej gałęzi na <branch>.

git branch -a

Wyświetla listę wszystkich zdalnych gałęzi.

Tworzenie gałęzi


Trzeba jednak pamiętać, że gałęzie są tylko odnośnikami do commitów. Podczas tworzenia gałęzi Git tworzy jedynie nowy odnośnik — nie zmienia repozytorium w żaden inny sposób. Jeśli zaczniesz od repozytorium, które wygląda tak:

Repozytorium bez gałęzi

Następnie należy utworzyć gałąź przy użyciu tego polecenia:

git branch crazy-experiment

Historia repozytorium nie zmienia się. Pojawia się tylko nowy odnośnik do bieżącego commitu:

Utwórz nową gałąź

Zauważ, że to polecenie tylko tworzy nową gałąź. Aby zacząć dodawać do niej commity, musisz ją wybrać za pomocą polecenia git checkout, a następnie użyć standardowych poleceń git add i git commit.

Tworzenie gałęzi zdalnych


Jak dotąd wszystkie te przykłady pokazywały działania na gałęziach lokalnych. Polecenie git branch działa również na gałęziach zdalnych. Aby działać na gałęziach zdalnych, należy najpierw skonfigurować repozytorium zdalne i dodać je do konfiguracji repozytorium lokalnego.

$ git remote add new-remote-repo https://bitbucket.com/user/repo.git
# Add remote repo to local repo config
$ git push <new-remote-repo> crazy-experiment~
# pushes the crazy-experiment branch to new-remote-repo

To polecenie wypchnie kopię gałęzi lokalnej crazy-experiment do repozytorium zdalnego <remote>.

Usuwanie gałęzi


Po zakończeniu pracy nad gałęzią i scaleniu jej z główną bazą kodu możesz usunąć gałąź bez utraty historii:

git branch -d crazy-experiment

Jeśli jednak gałąź nie została scalona, powyższe polecenie wyświetli komunikat o błędzie:

error: The branch 'crazy-experiment' is not fully merged. If you are sure you want to delete it, run 'git branch -D crazy-experiment'.

Chroni to przed utratą dostępu do całej linii programowania. Jeśli naprawdę chcesz usunąć gałąź (np. jest to nieudany eksperyment), możesz użyć oznaczenia -D:

git branch -D crazy-experiment

Usuwa gałąź niezależnie od jej stanu i bez ostrzeżeń, więc używaj tego polecenia rozsądnie.

Poprzednie polecenia spowodują usunięcie lokalnej kopii gałęzi. Gałąź może nadal istnieć w repozytoriach zdalnych. Aby usunąć gałąź zdalną, wykonaj poniższe czynności.

git push origin --delete crazy-experiment

lub

git push origin :crazy-experiment

Spowoduje to wypchnięcie do zdalnego repozytorium źródłowego sygnału usuwania, który wyzwala usunięcie gałęzi zdalnej crazy-experiment.

Podsumowanie


W tym dokumencie omówiliśmy zachowanie rozgałęzień Git oraz polecenie git branch. Polecenie git branch umożliwia tworzenie, wyświetlanie i usuwanie gałęzi oraz zmienianie ich nazw. Aby działać dalej na gałęziach wynikowych, to polecenie jest powszechnie używane z takimi innymi poleceniami jak git checkout. Dowiedz się więcej o operacjach na gałęziach przy użyciu polecenia git checkout, np. przełączaniu gałęzi czy scalaniu gałęzi, na stronie dotyczącej polecenia git checkout.

W porównaniu z innymi systemami kontroli wersji operacje na gałęziach Git są ekonomiczne i używane często. Elastyczność ta pozwala na zaawansowane dostosowywanie przepływu pracy Git. Aby uzyskać więcej informacji na temat przepływów pracy Git, odwiedź nasze strony dyskusji o rozszerzonym przepływ pracy: Przepływ pracy gałęzi funkcji, Przepływ pracy GitFlow i Przepływ pracy podziału.


Udostępnij ten artykuł
Następny temat

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up