Jak uzyskać zmiany z innego oddziału

101

Obecnie pracuję w featurexbranż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ć featurexna scalanie, chciałbym lokalnie pobrać wszystkie zmiany z our-teamgałęzi do, featurexaby 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ć?

Anthony
źródło
9
Zadałeś to pytanie bardzo celowo i precyzyjnie. Dzięki temu łatwiej jest odpowiedzieć, a noobom (takim jak ja) łatwiej jest zrozumieć.
douglas.kirschman

Odpowiedzi:

58

Z rebase możesz korzystać na przykład git rebase our-teamw swoim oddzialefeaturex

Przeniesie punkt początkowy gałęzi na koniec our-teamgałęzi, scalając wszystkie zmiany w featurexgałęzi.

JulCh
źródło
3
Użyję tego w przyszłości, jednak tym razem wykonałem następujące czynności… czy ma to taki sam wpływ? git checkout our-team git pull git checkout featurex git merge our-team
Anthony
5
Chciałbym podkreślić: jeśli to zrobisz i nie masz zmian z poziomu our-teamlokalnego, musisz git fetch && git rebase origin/our-teamzamiast tego uruchomić . Twoje polecenia zakładają, że repozytorium zostało wcześniej zaktualizowane.
Makoto,
109
  1. przejdź do gałęzi głównej our-team

    • git checkout nasz zespół
  2. pobierz wszystkie nowe zmiany z our-teamgałęzi

    • git pull
  3. idź do swojego oddziału featurex

    • git checkout featurex
  4. połącz zmiany our-teamoddziału w featurexoddział

    • git merge our-team
    • lub git cherry-pick,{commit-hash} jeśli chcesz scalić określone zatwierdzenia
  5. wprowadzaj zmiany wraz ze zmianami our-teamgałęzi

    • git push

Uwaga : prawdopodobnie będziesz musiał rozwiązać konflikty po scaleniu our-teamgałęzi w featurexgałąź przed wypchnięciem

Jad Chahine
źródło
gdzie by się wciągnął git?
chia yongkang
30
git fetch origin our-team

lub

git pull origin our-team

ale najpierw upewnij się, że jesteś już w gałęzi, do której chcesz zaktualizować (featurex).

heisenberg
źródło
8

Już prawie jesteś :)

Pozostało tylko to

git checkout featurex
git merge our-team

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.

Pierre Fouilloux
źródło
6

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 --forcesłuży flaga.

To, co sugerują inne plakaty, to połączenie . Spowoduje to pobranie featurexgałęzi z dowolnym stanem i spróbuje scalić ją z bieżącym stanem our-team, zachęcając do zrobienia jednego, dużego, zatwierdzenia scalenia i naprawienia wszystkich błędów łączenia przed naciśnięciem our-team. Różnica polega na tym, że starasz się swoimi featurexzobowiązuje zanim się our-teamnowych 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.

CyberFoxar
źródło