Załóżmy, że istnieją dwie gałęzie: master
i slave
, które edytują ten sam plik i tę samą linię. Początkowo, zawartość pliku jestJak ponownie sformatować poprawkę po scaleniu w Git?
foo bar
następnie w oddziale slave
jest edytowany stać
foo bar baz
Teraz użytkownik oddziału slave
formatuje łatę (git format-patch master
) i wysyła go do użytkownika oddziału master
. W tym samym czasie, w oddziale master
ten sam plik jest edytowany i staje
foo bar spam eggs
Łata nie może być stosowane, a master
pyta slave
scalić i zrobić nowy plaster. Gdy master
zostanie scalony w slave
, a konflikt zostanie rozwiązany, nadszedł czas na ponowne sformatowanie poprawki. Wykres popełnić wygląda następująco:
slave: master:
foo bar baz spam eggs
| \
| \
| foo bar spam eggs
| |
foo bar baz |
\ |
\ |
+--------- foo bar
Najnowszy commit (scalenia) na slave
wygląda następująco:
@@@ -1,1 -1,1 +1,1 @@@
- foo bar baz
-foo bar spam eggs
++foo bar baz spam eggs
Jednak jeśli teraz uruchomić git format-patch master
, wciąż uzyskać dokładnie taką samą łatkę jak poprzednio, która nie uwzględnia scalania i rozwiązywania konfliktów pod uwagę:
@@ -1 +1 @@
-foo bar
+foo bar baz
Jak sformatować poprawkę, która miałaby zastosowanie do najnowszego wzorca? Chciałbym to zrobić bez rebase
.
Aktualizacja: git format rev1..rev2
, gdzie rev1
i rev2
są szefowie master
i custom
oddziałów odpowiednio, nie zawierają zmiany związane z rozwiązywaniem konfliktów. git-diff
formatuje poprawną poprawkę, ale pomija wiadomości dotyczące zatwierdzania.
Używam łatek, ponieważ tego właśnie chce firma i nie mam kontroli nad przepływem pracy. Muszę sformatować łatki, które uwzględniają rozwiązywanie konfliktów, ponieważ również publikuję moje repozytorium i nie można go ponownie utworzyć. 'git diff', niestety, nie zawiera komunikatów commit. – sastanin
Istnieje sposób na scalenie tylko jednego rodzica. Łatka z tego dostarczy ci wynik, którego potrzebujesz. –
Połączenie z jednym rodzicem? Jak to jest możliwe? Czy "git-merge" nie ma na celu "połączenia dwóch lub więcej historii rozwoju"? – sastanin