2011-07-26 12 views
32

Utworzono nowy oddział git B z oddziału A z opcją śledzenia.Aktualizowanie bieżącej gałęzi z gałęzi nadrzędnej

Teraz, gdy oddział A jest aktualizowany o kilka zatwierdzeń, chcę również pobrać poprawki do B, więc mogę je śledzić i czasami nie muszę zmierzyć się z dużą zmianą.

Jak mam się do tego zbliżyć? Czy dzieje się to automatycznie w git?

+0

jest śledzenie oddziałów właściwie niczego oprócz stwierdzenia, że ​​odgałęzienie A żywi z gałęzi? –

+2

Powinieneś ponownie utworzyć gałąź B z A. –

Odpowiedz

35

To nie jest dokonywane automatycznie. Musisz ręcznie scalić zmiany z A do B, co jest dość proste. Wystarczy przejść do oddziału B i zrobić

git merge A 

który automatycznie scalić zmiany z punktu A do punktu B. Dopóki nie ma żadnych konfliktów, wszystkie zmiany w zostaną oznaczone jako scalone w B. Najczęstsze sprawdzone metody to dokonywanie codziennych scaleń, ale zależy to od liczby użytkowników/użytkowników, którzy korzystają z Twojego oddziału.

+0

Jeśli mówisz o tym, że A jest zdalną gałęzią, a B jest lokalną, git pull wystarczy – HackerGil

2

Zakładając, że twoja rozmowa o utworzeniu B była git clone /path/to/server/A, musisz po prostu wykonać git pull i gotowe. W ten sposób działa git pull: najpierw zmienia się z poziomu początkowego (śledzona gałąź A w twoim przypadku), następnie merge te zmiany w gałęzi, która śledzi śledzone odgałęzienie (B w twoim przypadku).

The Git Book i Pro Git omawiają ten temat dogłębnie, więc warto je przeczytać (jeśli się nie spieszysz, przeczytaj też resztę).

+0

Hej, tylko się zastanawiam. Nie jestem pewien, czy faktycznie stworzyłem gałąź B przez klonowanie z A. Właśnie stworzyłem gałąź 'git branch A' z pewną losową opcją, którą myślę. Tak więc, jeśli po prostu wykonuję polecenie git, git skarży się, że 'prosiłeś mnie, abym wyciągnął, nie informując mnie, z którą gałęzią chcesz się połączyć ...' – user482594

+0

@ user482594: 'pull' jest potrzebne tylko, jeśli chcesz pobrać dane z zdalny. Jeśli byłeś na 'A' i po prostu zrobiłeś' git checkout -b B', możesz po prostu 'scalić' (będąc na' B', wpisz 'git merge A'). – eckes

Powiązane problemy