2017-05-29 26 views
6

W moim przepływie pracy git muszę połączyć gałąź feature w master. Jednak podczas rozwiązywania konfliktów scalania ktoś wysłał nowe zatwierdzenie do feature i master.Skopiuj rozwiązane połączenie git do innego scalania

Muszę wygenerować nowe zatwierdzenie scalenia, oparte na new feature i new master. Jednak 90% konfliktów seryjnych jest wciąż takich samych. Moje pytanie brzmi. Czy mogę zapisać moje postępy z poziomu first merge i zastosować je w fazie konfliktu new merge?

+--------+  +--------+    +------------+ 
|  |  |  |    |   | 
| init +------> | master +-----------> | new master | 
|  |  |  |    |   | 
+--------+  +--------+    +------------+ 
     |     |        | 
     |   +---------+   +-------------+ 
     |   |   |   |    | 
     +---------> | feature +----------> | new feature | 
        |   |   |    | 
        +---------+   +-------------+ 
        | |       || 
        | |       || 
        | |  +----------------+ ||  +-----------+ 
        | +----> |    | +--------->   | 
        |   | first merge | |   | new merge | 
        +----------->    | +--------->   | 
           +----------------+    +-----------+ 

Odpowiedz

1

Git ma funkcję o nazwie rerere. Może być stosowany w tej sytuacji. Włącz rerere w pliku konfiguracyjnym i po prostu działa. Myślę, że jest to właściwy sposób rozwiązania tego problemu.

https://git-scm.com/blog/2010/03/08/rerere.html

https://git-scm.com/docs/git-rerere

Aby korzystać z tej funkcji bez włączania go z góry, skrypt https://github.com/git/git/blob/master/contrib/rerere-train.sh może pomóc.

Być może istnieje prosta metoda, aby to zrobić. Scalenie new feature z first merge, a następnie połącz wynik z new master.

+0

Spojrzę na git-rerere. Mógłbym rozwiązać to z dodatkowym scaleniem, ale nie chcę tworzyć tak wielu załączników. –

+0

rerere nie zmniejszy liczby scaleń, tylko potencjalnie zmniejszy liczbę konfliktów scalania, które trzeba ręcznie obsłużyć. –