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.
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.