Jestem w oknach.
Z różnych powodów mamy wiele instancji git różnych gałęzi svn.
Wiele razy chcę naprawić problem w repozytorium A, wygenerować poprawkę i zastosować ją do repozytorium B. Działa to dobrze, chyba że występują konflikty.
Podczas zmiany bazy po prostu klikam folder prawym przyciskiem myszy i używam tortioseGit i wybieram opcję rozwiązania. Pojawi się fajny GUI, który pozwoli mi rozwiązać moje konflikty.
Czy jest jakiś sposób, aby to osiągnąć z odrzuconymi fragmentami łaty?
Oto moje obecne podejście do tworzenia / nakładania łatek
git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
git mergetool
i wykonać 3-drożne scalanie z wybranym przez ciebie GUI (jestem stronniczy w kdiff w Windows) ...Odpowiedzi:
Aby wygenerować poprawkę, wykonaj następujące czynności:
Teraz, gdy jesteś gotowy do nałożenia plastrów:
-3
zrobi trójdrożny seryjnej czy istnieją konflikty. W tym momencie można zrobićgit mergetool
, jeśli chcesz iść do gui lub po prostu ręcznie scalić pliki przy użyciu vim (średnia<<<<<<
,||||||
,>>>>>>
rozwiązywanie konfliktów).źródło
--ignore-whitespace --ignore-space-change
dogit am
zbyt. Miałem trywialne połączenia, które bez tego nie przebiegały.git apply -3 changes.patch
wydaje się, że działa również dla mniegit mergetool
. Zamiast tego musiałem znaleźć zatwierdzenie bazowe oryginalnej łatki, nałożyć ją na to (na szczęście moje repozytorium to miało), a następnie ponownie bazować.git am -3
też niegit apply -3
będzie faktycznie spaść markery konfliktowych do moich plików, chociaż dostać wiadomości jakApplied patch to 'configure.ac' with conflicts.
ierror: patch failed: ...
. To jest włączonegit 2.17.1
. Może jeśli niektórych plików nie da się w ogóle załatać, git wycofuje się?Jeśli często napotykasz ten sam zestaw konfliktów podczas stosowania poprawek, zmiany bazy lub scalania, możesz użyć funkcji git rerere (ponowne użycie nagranego rozwiązania). Pozwala to wstępnie zdefiniować, jak konflikty powinny być rozwiązywane na podstawie tego, jak rozwiązałeś je w przeszłości. Zobacz http://git-scm.com/blog/2010/03/08/rerere.html, aby dowiedzieć się, jak to działa.
źródło
TortoiseGit ma funkcję scalania, która może otwierać pliki łat.
Jest to obraz o tym tutaj .
źródło
Moje podejście jest następujące:
źródło