Jak Git Rebase

Jak Git Rebase
Git Rebase to narzędzie scalania tak jak Git Scal. Ale sposób, w jaki pracują, jest inny.

W tym artykule opowiem o tym, jak działa Git Rebase, różnice między Git Rebase i Git Scal i jak pracować z Git Rebase. Więc zacznijmy.

Git Rebase:

Powiedzmy, że masz repozytorium git z zatwierdzeniami A, B, C w gospodarz oddział. Następnie stworzyłeś nowy oddział Some Branch i dodał 2 nowe zatwierdzenia D I mi do Some Branch oddział.

Ryc. 1: Historia początkowej zatwierdzenia.

Powiedzmy teraz, zapomniałeś dodać coś do gospodarz oddział. Więc wracasz do gospodarz oddział i dodaj nowy zatwierdzenie G do gospodarz oddział. Twoja historia git powinna wyglądać w następujący sposób.

Ryc. 2: Zobowiązaj historię po dodaniu zatwierdzenia g w oddziale głównym.

Wszystko wygląda dobrze. Teraz, jeśli chciałeś wszystkich zmian, które dokonałeś w Some Branch gałąź w gospodarz gałąź, możesz połączyć Some Branch oddział do gospodarz oddział. To jest git łączyć Do.

Co jeśli chcesz zatwierdzić G być dostępny w Some Branch oddział? Cóż, możesz do tego użyć Git Rebase.

Z historii zatwierdzenia na ryc. 2 możesz zobaczyć, że gałąź Some Branch zaczyna się od zatwierdzenia C. Jeśli wykonujesz rebaz git Some Branch, wtedy zacznie się od zatwierdzenia G jak pokazano na ryc. 3 poniżej. Zauważ, że zawartość zatwierdzenia D I mi Zmieni się również po operacji rebazy. Zobowiązania D I mi obejmie zmiany w commit G. Dlatego dodałem * symbol przed zatwierdzeniem D I mi.

Jeśli chcesz wiedzieć, jak wyglądałaby historia zatwierdzenia, gdybym ją połączył, spójrz na ryc. 4. Dołączyłem to tylko, abyś mógł to porównać z Git Rebase.

Ryc. 4: Historia zatwierdzenia, jeśli użyto git scale.

Teraz, gdy wiesz, co to jest Git Rebase, różnica między Git Rebase a Git Scal i dlaczego używał Git Rebase, pokażę, jak używać go w następnej sekcji tego artykułu poniżej.

Git Rebase Workflow:

W tej sekcji utworzę nowe repozytorium GIT na moim lokalnym komputerze i pokażę, jak działa Git Rebase. Polecam dobrze zrozumieć Git Rebase przed zastosowaniem go w swoim projekcie.

Najpierw utwórz nowe repozytorium GIT REBASE-DEMO/ na twoim komputerze w następujący sposób:

$ git init rebase-demo

Teraz przejdź do REBASE-DEMO/ katalog w następujący sposób:

$ CD REBASE-DEMO/

Teraz utwórz nowy plik test.tekst następująco:

$ echo „a”> test.tekst

Test.plik txt zawiera tylko jedną linię A. Powiedzmy, że to twój początkowy kod projektu.

Teraz popełnij zmiany w następujący sposób:

$ git add .
$ git commit -m „a”

Teraz dodaj kolejną linię B do test.tekst Plik, jak pokazano na zrzucie ekranu poniżej.

Teraz popełnij zmiany w następujący sposób:

$ git add .
$ git commit -m 'b'

Teraz dodajmy kolejną linię C do test.tekst plik.

Popełnij również zmiany w następujący sposób:

$ git add .
$ git commit -m 'c'

Teraz historia zatwierdzenia głównego oddziału powinna wyglądać w następujący sposób:

$ git log -linia

Powiedzmy teraz, masz kilka nowych pomysłów, które chcesz wypróbować. Utwórzmy więc i sprawdźmy do nowego oddziału Nowa cecha następująco:

$ git kector -b nowa faza

Teraz dodaj swój nowy pomysł (linia D Powiedzmy) do test.tekst plik.

Teraz popełnij zmiany w następujący sposób:

$ git add .
$ git commit -m 'd'

Teraz dodaj linię E do test.tekst plik.

Popełnić zmiany w następujący sposób:

$ git add .
$ git commit -m 'e'

Teraz historia zatwierdzenia Nowa cecha Oddział powinien wyglądać w następujący sposób:

$ git log -linia

Zobacz, jak są zatwierdzenia w kolejności < B < C < D < E?

Teraz pamiętasz, że zapomniałeś dodać coś do gospodarz gałąź, którą również chciałeś być w Nowa cecha oddział! Tak więc sprawdź do gospodarz oddział.

Dodałem nową linię na końcu test.tekst Plik, jak widać.

Teraz popełnij zmiany w następujący sposób:

$ git add .
$ git commit -m 'g'

Teraz historia zatwierdzenia gospodarz Oddział powinien wyglądać tak.

A < B < C < G

Teraz, aby zbawić zatwierdzenia z gospodarz oddział do Nowa cecha oddział, pierwszy kas do Nowa cecha oddział.

$ git kector new-feure

Teraz zrób git rebazę gospodarz oddział w następujący sposób:

$ git rebase master

Jakiś konflikt scalenia! Naprawmy to.

Cóż, zmiany, które wprowadziłem w zatwierdzeniu G I D są ze sobą sprzeczne. Chcę zachować oba te.

Po naprawie konfliktu scalania, test.tekst Plik powinien wyglądać w następujący sposób:

Teraz dodaj zmiany do obszaru inscenizacji w następujący sposób:

$ git add .

Teraz kontynuuj rebazę działającą w następujący sposób:

$ git rebase -continue

Kolejny konflikt scalania! To może się zdarzyć. Rebaza zmienia historię Git Commit. Tak więc takie rzeczy są oczekiwane.

Wygląda na to, że proces scalania nie powiódł się z powodu niektórych pustych linii. Naprawmy to.

Po naprawie konfliktu scalania, test.tekst Plik powinien wyglądać w następujący sposób.

Teraz dodaj zmiany do obszaru inscenizacji w następujący sposób:

$ git add .

Teraz kontynuuj operację rebazy w następujący sposób:

$ git rebase -continue

Git Rebase jest kompletny.

Jak widać, Historia zatwierdzenia oddziału nowatorskiego jest aktualizowana. Teraz historia zatwierdzenia jest następująca:

A < B < C < G < D < E

Tak jak oczekiwano.

Finał test.tekst Plik powinien wyglądać w następujący sposób.

Git Rebase to potężne narzędzie. Ale nigdy nie powinieneś go używać na wspólnych repozytoriach git. Używaj go tylko na repozytoriach GIT, w którym pracujesz. W przeciwnym razie po drodze zmierzysz się z wieloma problemami.

Tak więc używasz Git Rebase. Dziękujemy za przeczytanie tego artykułu.