Ostatnio zostałem poproszony cherry-pick
o zatwierdzenie.
Więc co oznacza wybranie cherry git? Jak ty to robisz?
git
cherry-pick
git-cherry-pick
Rahul
źródło
źródło
Odpowiedzi:
Zbieranie wiśni w Git oznacza wybranie zatwierdzenia z jednej gałęzi i zastosowanie go do innej.
Jest to sprzeczne z innymi sposobami, takimi jak
merge
irebase
które zwykle stosują wiele zatwierdzeń do innej gałęzi.Upewnij się, że jesteś w gałęzi, do której chcesz zastosować zatwierdzenie.
Wykonaj następujące czynności:
NB:
Jeśli wybierzesz z publicznego oddziału, powinieneś rozważyć użycie
Spowoduje to wygenerowanie standardowego komunikatu zatwierdzenia. W ten sposób Ty (i Twoi współpracownicy) nadal możecie śledzić pochodzenie zatwierdzenia i uniknąć konfliktów scalania w przyszłości.
Jeśli masz dołączone notatki do zatwierdzenia, nie są one zgodne z wyborem. Aby je również przynieść, musisz użyć:
Dodatkowe linki:
źródło
git cherry-pick -x <commit-hash>
. Spowoduje to wygenerowanie standardowego komunikatu zatwierdzenia. W ten sposób Ty (i Twoi współpracownicy) nadal możecie śledzić pochodzenie zatwierdzenia i uniknąć konfliktów scalania w przyszłości.git notes copy <from> <to>
ich również przynieść."cherry-pick commit applies the changes introduced by the named commit on the current branch"
Większość ppl mają tendencję do myślenia o zatwierdzeniu jako o zmianach (jak svn was iirc), ale nie jest tak, każde zatwierdzenie odnosi się do pełnego działającego drzewa. Chociaż w tym przypadku nie robi to różnicy, może pomóc zrozumieć, dlaczego git działa tak, jak działa.Ten cytat pochodzi z; Kontrola wersji za pomocą Git (Naprawdę świetna książka, zachęcam do jej zakupu, jeśli jesteś zainteresowany Gitem )
Edycja: Ponieważ ta odpowiedź wciąż robi wrażenie, chciałbym dodać bardzo fajny film instruktażowy na ten temat:
Youtube: Wprowadzenie do Git cherry-pick
przed:
po:
źródło
Zbieranie wiśni w Git ma na celu zastosowanie zatwierdzenia z jednej gałęzi do innej gałęzi. Można to zrobić, jeśli np. popełnił błąd i popełnił zmianę w niewłaściwej gałęzi, ale nie chce scalać całej gałęzi. Możesz po prostu np. cofnij zatwierdzenie i wybierz go w innej gałęzi.
Aby go użyć, wystarczy
git cherry-pick hash
, gdziehash
jest hash zatwierdzenia z innej gałęzi.Pełna procedura znajduje się na stronie: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html
źródło
Krótki przykład sytuacji, w której potrzebujesz cherry pick
TERAZ : Naprawiasz coś w wersji 1 . Oczywiście potrzebujesz tej poprawki również w trybie głównym . I to jest typowy przypadek użycia do zbierania wiśni. Zatem wybór wiśni w tym scenariuszu oznacza, że pobierasz zatwierdzenie z gałęzi release1 i dołączasz ją do gałęzi master .
źródło
cherry-pick to funkcja Git. Jeśli ktoś chce zatwierdzić określone zatwierdzenia w jednej gałęzi do gałęzi docelowej, wówczas używana jest funkcja cherry-pick.
kroki git-pick-cherry są jak poniżej.
Tutaj ID zatwierdzenia jest identyfikatorem aktywności innej gałęzi.
Odwiedź https://git-scm.com/docs/git-cherry-pick
źródło
Przygotowałem ilustracje krok po kroku, co robi cherry-pick - oraz animację tych ilustracji (pod koniec).
(zrobimy wybranie zatwierdzenia
L
z oddziałufeature
):git cherry-pick feature~2
(
feature~2
jest 2 nd popełnić przedfeature
, czyli popełnićL
):git cherry-pick feature~2
):To samo animowane:
Uwaga:
Zatwierdzenie
L'
jest z punktu widzenia użytkownika (zatwierdzenie = migawka) dokładną kopią zatwierdzeniaL
.Technicznie (wewnętrznie) jest to nowe, inne zatwierdzenie (ponieważ np.
L
Zawiera wskaźnik doK
(jako jego rodzic), podczas gdyL'
zawiera wskaźnik doE
).źródło
Możesz pomyśleć, czy wybór wiśni jest podobny do rebase, czy raczej jest zarządzany jak rebase. Rozumiem przez to, że pobiera istniejące zatwierdzenie i regeneruje je, przyjmując jako punkt wyjścia szef gałęzi, w której aktualnie się znajdujesz.
rebase
Trwa popełnić że miał dominującą X i regeneruje popełnić tak jakby rzeczywiście miała rodzica Y, i to jest dokładnie to, cocherry-pick
robi.Cherry pick to więcej o tym, jak wybierasz zatwierdzenia. Z
pull
(rebase), git niejawnie regeneruje lokalne zatwierdzenia na podstawie tego, co zostało ściągnięte do twojej gałęzi, ale wraz zcherry-pick
tobą wyraźnie wybierasz niektóre zatwierdzenia i domyślnie regenerujesz je (ich) na bieżącym oddziale.Więc sposób, w jaki to robisz, różni się, ale pod maską są to bardzo podobne operacje - regeneracja zatwierdzeń.
źródło
cherry-pick
zachowuje się tak, jak później, gdy gałąź docelowa jest później scalana z powrotem w gałąź źródłową. Dziękuję Panu.To trochę jak Kopiuj (skądś) i Wklej (gdzieś), ale dla określonych zatwierdzeń.
Jeśli chcesz na przykład wykonać poprawkę, możesz skorzystać z tej
cherry-pick
funkcji.Wykonaj swoją pracę
cherry-pick
w gałęzi deweloperskiej, a następniemerge
w gałęzi wydania. Podobnie, wykonajcherry-pick
od gałęzi wydania do opanowania. Voilaźródło
Podczas pracy z zespołem programistów nad projektem zarządzanie zmianami między wieloma gałęziami git może stać się złożonym zadaniem. Czasami nie chcesz scalać całej gałęzi w inną i wystarczy wybrać jeden lub dwa konkretne zatwierdzenia. Ten proces nazywa się „zbieraniem wiśni”.
Znalazłem świetny artykuł na temat zbierania wiśni, sprawdź szczegółowe informacje: https://www.previousnext.com.au/blog/intro-cherry-picking-git
źródło
Jeśli chcesz połączyć bez identyfikatorów zatwierdzenia, możesz użyć tego polecenia
Powyższe polecenie połączy trzy ostatnie zatwierdzenia master od 1 do 3
Jeśli chcesz to zrobić dla pojedynczego zatwierdzenia, po prostu usuń ostatnią opcję
W ten sposób scalisz 3. zatwierdzenie od końca master.
źródło
Zastosuje określone zatwierdzenie do twojego obecnego oddziału.
To znaczy :
Np .: Rozważ zatwierdzenie A.
popełnić B
Jeśli wybierzesz zatwierdzenie B w innym oddziale, skończysz z:
ponieważ zatwierdzenie B zawiera newFileB i main , ale nie ma newFileA , co powoduje błąd, więc używaj go ostrożnie.
źródło
Fragment oficjalnych dokumentów:
Czytaj więcej...
źródło