Próbując osiągnąć nirwanę git, spędzam dzień na uczeniu się, jak wykorzystać rebase w sytuacjach, w których obecnie się łączę.
Podczas przechodzenia przez coś, co uważam za przepływ git 101 (który przeliteruję poniżej), muszę push --force
cofać zmiany do źródła.
Nie jestem jedyny - wiem, że to teren zakryty (patrz 1 , 2 , 3 , 4 , 5 ) i rozumiem techniczne powody, dla których siła jest konieczna. Mój problem jest następujący - jest wiele (wiele) wpisów na blogu wychwalających rebase i tego, jak zmieniło to ich życie (zobacz 1 , 2 , 3 , 4, aby wymienić kilka), ale żaden z nich nie wspomina, że push --force
jest to część ich przepływ. Jednak prawie każda odpowiedź na istniejące pytania dotyczące przepełnienia stosu brzmi: „tak, jeśli zamierzasz zmienić bazę, musisz użyć push --force
”.
Biorąc pod uwagę liczbę i religijność zwolenników rebase, muszę wierzyć, że stosowanie metody „push --force” nie jest nieodłączną częścią przepływu rebase i że jeśli ktoś często musi zmuszać ich do popychania, robi coś złego .
push --force
to zła rzecz .
Więc oto mój flow. W jaki sposób mógłbym osiągnąć takie same wyniki bez użycia siły?
Prosty przykład
Dwie gałęzie:
- v1.0 - gałąź wydania, zawiera tylko poprawki
- master - wszystko do następnego dużego wydania.
Mam kilka zatwierdzeń poprawek i kilka zmian na następne wydanie.
Chciałbym włączyć poprawki do mojego mastera, aby nie zostały utracone w następnym wydaniu. Przed oświeceniem po prostu:
git checkout master
git merge v1.0
Ale teraz próbuję
git checkout master
git rebase v1.0
Więc teraz jestem tutaj:
Czas na:
git push
Nie ma kości.