Powiedzmy, że masz repozytorium Git. Pracujesz nad gospodarz oddział i dokonałeś kilku zobowiązań (A, b i c) na gospodarz oddział.
Teraz nagle masz świetny pomysł. Więc tworzysz inną gałąź nowy pomysł. Następnie zacząłeś popełnić zatwierdzenie (E, F i G) Tam.
Wprowadziłeś również pewne zmiany w gospodarz Oddział ponownie i dodał nowy zatwierdzenie H.
Teraz, jeśli twój nowy pomysł jest sukcesem, możesz chcieć połączyć nowy pomysł oddział do gospodarz oddział. Powiedzmy, połączyłeś to. Stworzy nowe zatwierdzenie I Jak widać na poniższym rysunku. Nowe zatwierdzenie będzie zawierać wszystko (wszystkie zmiany w zatwierdzeniach mi, F, I G) nowy pomysł.
Powiedzmy teraz, że nie chcesz połączyć wszystkich zobowiązań oddziału nowy pomysł do gospodarz oddział. Chcesz tylko scalić zmiany (tylko zmiany różnorodne) w zatwierdzeniu F do gospodarz oddział. Tutaj pojawia się Git Cherry Pick. Git Cherry Pick pozwala ci to zrobić. Po prostu znajdziesz skrót z zatwierdzenia, który chcesz wybrać i zastosować go do żądanej gałęzi. Bardzo prosta.
W tym artykule pokażę ci, jak wybrać w Git. Więc zacznijmy.
Git Cherry Pick Flow:
W tej sekcji zamierzam skonfigurować repozytorium Git w sposób, w jaki zrozumiesz, dlaczego Git Cherry Pick jest używany i jak wybierać w Git.
Najpierw zainicjuj puste repozytorium GIT Cherry-Pick-Demo/ następująco:
$ git init init cherry-pick-demo
Teraz przejdź do repozytorium w następujący sposób:
$ CD Cherry-Pick-Demo/
Teraz stwórz główny.C Plik z następującymi treściami:
Teraz dodaj plik do obszaru inscenizacji w następujący sposób:
$ git add .
Teraz popełnij zmiany w następujący sposób:
$ git commit -m „początkowe zatwierdzenie”
Teraz stwórz .Gitignore Plik z następującą zawartością:
Dodaj plik do obszaru inscenizacji.
$ git add .
Popełnić zmiany:
$ git commit -m 'dodał .plik Gitignore '
Jak widać, mam teraz 2 zatwierdzenia gospodarz oddział.
$ git log -linia
Teraz chcę przesunąć moje lokalne repozytorium git na zdalny serwer GIT, aby inne osoby mogły pracować nad tym repozytorium. Możesz również użyć github tutaj. Użyję do tego lokalnego serwera SSH.
Dodaj więc zdalne adresy URL repozytorium GIT w następujący sposób:
$ git zdalny dodaj pochodzenie [email protected]: ~/cherry-pick-demo.git
Teraz popchnij gospodarz oddział do zdalnego repozytorium GIT w następujący sposób:
$ git push pochodzenie mistrz
Powiedzmy teraz pion chce przyczynić się do projektu. Więc sklonował repozytorium Git na swoim komputerze.
$ git Clone [email protected]: ~/cherry-pick-demo.Git MyProject
Teraz Bob porusza się do swojego katalogu projektu.
$ cd myProject/
Ma też 2 zobowiązania, które dodałem.
$ git log -linia
Teraz Bob tworzy test oddział, aby wypróbować jego pomysły.
test $ git -kaset -b
Postanawia zmienić wartość zwrotną ze stałą Exit_success z stdlib biblioteka.
Dodaje zmiany do obszaru inscenizacji.
$ git add .
Popełnia zmiany.
$ git commit -m 'Używany exit_success zamiast 0 jako wartość zwrotna' '
Teraz postanawia użyć funkcji printmessage () Aby wydrukować wiadomość. Więc pisze funkcję.
Ponownie popełnia zmiany.
$ git add .
$ git commit -m 'Dodano funkcję printMessage ()'
Następnie Bob używa funkcji w programie.
Ponownie popełnia zmiany.
$ git add .
$ git commit -m 'UŻYWAJ FUNKCJA PRINTMESSAGE () do wydrukowania wiadomości' '
Teraz Bob ma następujące zatwierdzenia w test oddział.
Teraz Bob popycha gałąź testową do zdalnego repozytorium GIT.
$ git push pochodzenie
Teraz Bob dzwoni do ciebie i opowiada o niesamowitych zmianach, które wprowadził. Tak więc przyniosłeś zmiany w zdalnym repozytorium GIT do własnego lokalnego repozytorium.
$ git fetch
Teraz widzisz nowy oddział pochodzenie/test.
Znalazłeś także 3 nowe zobowiązania, które Bob zrobił.
$ git log -lineline pochodzenie/test
Teraz chciałbyś wiedzieć, jakie zmiany wprowadziły Bob.
$ git log -p pochodzenie/test
Postanawiasz nie zastąpić wartości zwracanej na exit_success, tak jak Bob.
Podoba Ci się koncepcja używania funkcji do drukowania wiadomości.
Podoba ci się również ten zatwierdzenie.
Więc chcesz połączyć 2 z 3 zobowiązań Bob. Jeśli używałeś git scal do scalania testu oddziału, wszystkie 3 zobowiązania zostaną zastosowane. Ale dzięki funkcji Git Cherry Pick możesz tylko połączyć zobowiązania, które lubisz.
Zauważ, że kiedy wybierasz popełnienie w Git, zawsze zaczynasz od najstarszego zatwierdzenia i przechodzisz do najnowszego małego małego.
Wcześniej wybrałem Cherry, główny.C Plik wygląda następująco.
Teraz Cherry wybierzmy najstarsze z 2 zobowiązań, 9A4E532 w następujący sposób:
$ Git Cherry-Pick 9A4E532
Konflikt scalania! To może się zdarzyć.
Teraz otwórz główny.C Złóż i napraw konflikt scalania.
Ostateczny plik powinien wyglądać w następujący sposób.
Teraz dodaj zmiany do obszaru inscenizacji.
$ git add.
Teraz popełnij zmiany w następujący sposób:
$ git cherry-pick-continue
NOTATKA: Możesz także użyć git zatwierdzić tutaj także. To zależy od Ciebie. wolę Git Cherry -Pick -Continue ponieważ automatycznie użyje komunikatu zatwierdzenia z Commit I -Cherry.
Teraz wpisz swoją wiadomość zatwierdzenia i zapisz plik.
Należy dodać nowe zatwierdzenie.
Teraz Cherry wybierz następne zatwierdzenie w następujący sposób:
$ git cherry-pick 08ba5e7
Brak konfliktu scalania. Świetnie! Nowe zatwierdzenie powinno zostać dodane automatycznie.
Jak widać, dostaję dokładnie to, czego chciałem. Połączyłem tylko zobowiązania, których potrzebowałem.
Tak właśnie wybierasz w Git. Dziękujemy za przeczytanie tego artykułu.