Ich bin an Fenstern.
Aus verschiedenen Gründen haben wir mehrere Git-Instanzen verschiedener SVN-Zweige.
Oft möchte ich ein Problem in Repository A beheben, einen Patch generieren und auf Repository B anwenden. Dies funktioniert einwandfrei, außer wenn Konflikte vorliegen.
Beim erneuten Basieren klicke ich einfach mit der rechten Maustaste auf den Ordner, verwende tortioseGit und wähle die Auflösungsoption. Dies bringt eine nette GUI hervor, mit der ich meine Konflikte durcharbeiten kann.
Gibt es eine Möglichkeit, dies mit abgelehnten Patch-Chunks zu erreichen?
Hier ist mein aktueller Ansatz zum Erstellen / Anwenden der Patches
git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
git mergetool
Sie eine 3-Wege-Zusammenführung mit der GUI Ihrer Wahl verwenden und durchführen (ich bin teilweise an kdiff unter Windows interessiert) ...Antworten:
Gehen Sie wie folgt vor, um Ihren Patch zu generieren:
Wenn Sie nun bereit sind, die Patches anzuwenden:
Bei
-3
Konflikten wird eine Drei-Wege-Zusammenführung durchgeführt. An dieser Stelle können Sie tun ,git mergetool
wenn Sie eine gui gehen wollen fusionieren oder nur die Dateien manuell vim (der Standard<<<<<<
,||||||
,>>>>>>
Konfliktlösung).quelle
--ignore-whitespace --ignore-space-change
umgit am
zu. Ich hatte triviale Zusammenschlüsse, die ohne sie nicht zustande kamen.git apply -3 changes.patch
scheint auch für mich zu funktionierengit mergetool
. Stattdessen musste ich die Basis finden, die den ursprünglich verwendeten Patch festschrieb, darüber hinaus anwenden (zum Glück hatte mein Repo dies) und dann neu starten.git am -3
nochgit apply -3
werden tatsächlich Konfliktmarkierungen in meine Dateien eingefügt, obwohl ich Nachrichten wieApplied patch to 'configure.ac' with conflicts.
und erhalteerror: patch failed: ...
. Das ist angit 2.17.1
. Vielleicht, wenn einige Dateien überhaupt nicht gepatcht werden können, rollt git zurück?Wenn Sie beim Anwenden von Patches, erneuten Basieren oder Zusammenführen häufig auf denselben Konfliktsatz stoßen, können Sie die Funktion git rerere (Wiederverwendung der aufgezeichneten Auflösung) verwenden. Auf diese Weise können Sie vorab festlegen, wie Konflikte gelöst werden sollen, basierend darauf, wie Sie sie in der Vergangenheit gelöst haben. Weitere Informationen zur Funktionsweise finden Sie unter http://git-scm.com/blog/2010/03/08/rerere.html .
quelle
TortoiseGit verfügt über eine Zusammenführungsfunktion, mit der Patch-Dateien geöffnet werden können.
Es gibt ein Bild davon hier .
quelle
Mein Ansatz ist:
quelle