2016-07-27 17 views
5

Po prostu chcę wiedzieć, jeśli jest jakakolwiek metoda, aby rozwiązać scalenia, dwóch gałęzi git, bez ich scalania.git: Rozwiązywanie konfliktów scalających bez przeprowadzania scalania

Zakładając, mam gałąź "featureMy"; mój kolega stworzył kolejną gałąź "featureHis". Obie gałęzie są tworzone w gałęzi "master".

Mój współpracownik utworzył następnie żądanie scalenia dla swojego oddziału "featureHis" do wzorca. Kiedy następnie tworzę moje żądanie scalenia "featureMy" w master, chcę się upewnić, że nie będzie to w konflikcie z masterem po scaleniu "featureHis".

Zazwyczaj scalę "featureHis" w "featureMy". Jednak nie jest to satysfakcjonujące, ponieważ mam dodatkowe zatwierdzenie scalania jako "szum", a moje żądanie scalenia będzie zawierało zmiany z "featureHis".

Czy istnieje sposób, aby rozwiązać konflikty scalania, bez tworzenia zgody na scalanie?

poważaniem

+0

Możesz zrobić '--no-commit', jeśli chcesz sprawdzić, czy wystąpi konflikt. http://stackoverflow.com/a/501461/3000179 –

Odpowiedz

5

jeden standardowy sposób, aby uniknąć konieczności zobowiązuje się do korzystania podścielanie w miejscu łączenia seryjnej. Rozważmy następujący scenariusz:

master:  A 
featureMy: A -- B 
featureHis: A -- C 

Zakładając, że tylko te dwie gałęzie są istniejące od master, a następnie jeden z was będzie łączyć z master pierwszy. Powiedzmy, że to twój kolega trafia tam pierwszy. Następnie schemat wyglądałby następująco:

master:  A -- C 
featureMy: A -- B 
featureHis: A -- C 

kolegi popełnić jest teraz w master gałęzi. Teraz, jeśli używasz przepływu pracy opartego na scalaniu, musisz najpierw połączyć master w swoim oddziale, a następnie scalić swój oddział z powrotem w master. Spowodowałoby:

master:  A -- C -- E 
featureMy: A -- B -- D 
featureHis: A -- C 

Teraz zarówno oddziale i na master oddziału mają brzydki seryjnej zobowiązuje się w nich. Jednakże, jeśli miał rebased swój oddział na master, można byłoby lewej:

master:  A -- C 
featureMy: A -- C -- B' (B' indicates that this a new commit, not B) 
featureHis: A -- C 

Teraz twój oddział featureMy jest rzeczywiście naprzód z master gałęzi. Możesz po prostu przekazać swoje zatwierdzenie bezpośrednio pod nagłówkiem master, bez konfliktów. Wynika to z poniższym schematem:

master:  A -- C -- B' 
featureMy: A -- C -- B' 
featureHis: A -- C 

zauważyć, że istnieją nie seryjnej zobowiązuje wszędzie. W rzeczywistości zarówno historia featureMy, jak i mają identyczne liniowe historie.

Niech żyje git rebase.

+0

Dodam, że aby śledzić jego bieżący przepływ pracy, powinien najpierw dokonać ponownego podziału gałęzi 'featureMy' na' featureHis' i rozwiązać wszelkie konflikty. Po dodaniu oddziału 'featureHis' do' master', może on ponownie umieścić 'featureMy' na' master' i połączyć się z 'master'. – geoji

Powiązane problemy