Obecnie pracuję w featurex
branży. Nasza główna gałąź nazywa się gałąź our-team
. Odkąd zacząłem pracować featurex
, więcej zmian zostało wprowadzonych w gałęzi our-team
. Zanim zacznę naciskać featurex
na scalanie, chciałbym lokalnie pobrać wszystkie zmiany z our-team
gałęzi do, featurex
aby mieć pewność, że wszystko działa zgodnie z oczekiwaniami.
Zrobiłem to lokalnie, aby pobrać wszystkie najnowsze zmiany z our-team
.
git checkout our-team
git pull
Jak mogę to zrobić?
Odpowiedzi:
Z rebase możesz korzystać na przykład
git rebase our-team
w swoim oddzialefeaturex
Przeniesie punkt początkowy gałęzi na koniec
our-team
gałęzi, scalając wszystkie zmiany wfeaturex
gałęzi.źródło
git checkout our-team git pull git checkout featurex git merge our-team
our-team
lokalnego, musiszgit fetch && git rebase origin/our-team
zamiast tego uruchomić . Twoje polecenia zakładają, że repozytorium zostało wcześniej zaktualizowane.przejdź do gałęzi głównej
our-team
pobierz wszystkie nowe zmiany z
our-team
gałęziidź do swojego oddziału
featurex
featurex
połącz zmiany
our-team
oddziału wfeaturex
oddziałour-team
{commit-hash}
jeśli chcesz scalić określone zatwierdzeniawprowadzaj zmiany wraz ze zmianami
our-team
gałęziUwaga : prawdopodobnie będziesz musiał rozwiązać konflikty po scaleniu
our-team
gałęzi wfeaturex
gałąź przed wypchnięciemźródło
lub
ale najpierw upewnij się, że jesteś już w gałęzi, do której chcesz zaktualizować (featurex).
źródło
Już prawie jesteś :)
Pozostało tylko to
To połączy nasz zespół w featurex.
Powyższe zakłada, że już zatwierdziłeś / ukryłeś swoje zmiany w featurex, jeśli tak nie jest, musisz to zrobić najpierw.
źródło
Dla innych osób, które trafiają na ten post w Google. Istnieją dwie opcje: scalanie lub ponowne bazowanie gałęzi. Oba działają inaczej, ale mają podobne wyniki.
Odpowiedź akceptowana jest rebase . Spowoduje to pobranie wszystkich wykonanych zatwierdzeń,
our-team
a następnie zastosowanie wykonanych zatwierdzeńfeaturex
, zachęcając do ich scalenia w razie potrzeby.Jednym z ograniczeń związanych z ponownym bazowaniem jest to, że tracisz / przepisujesz historię gałęzi, mówiąc gitowi, że twoja gałąź nie zaczęła się od zatwierdzenia 123abc, ale 456cde. Spowoduje to problemy dla innych osób pracujących w gałęzi, a niektóre narzędzia zdalne będą na to narzekać. Jeśli jednak jesteś pewien tego, co robisz, do tego
--force
służy flaga.To, co sugerują inne plakaty, to połączenie . Spowoduje to pobranie
featurex
gałęzi z dowolnym stanem i spróbuje scalić ją z bieżącym stanemour-team
, zachęcając do zrobienia jednego, dużego, zatwierdzenia scalenia i naprawienia wszystkich błędów łączenia przed naciśnięciemour-team
. Różnica polega na tym, że starasz się swoimifeaturex
zobowiązuje zanim sięour-team
nowych zatwierdzeń i następnie ustalenie różnic. Nie przepisujesz również historii, zamiast tego dodajesz do niej jeden commit, zamiast przepisać te, które były wcześniej.Obie opcje są prawidłowe i mogą działać w tandemie. To, co jest zwykle (przez to mam na myśli, jeśli używasz szeroko rozpowszechnionych narzędzi i metod, takich jak git-flow ) jest wykonywane dla gałęzi funkcji, to scalanie jej z główną gałęzią, często przechodząc przez żądanie scalenia i rozwiązując wszystkie konflikty które powstają w jednym (lub wielu) zatwierdzeniach scalających.
Rebasing jest interesującą opcją, która może pomóc w naprawieniu gałęzi przed ostatecznym przejściem przez scalanie i złagodzić ból związany z koniecznością wykonania jednego dużego zatwierdzenia przez scalanie.
źródło