Manuell Zusammenführen von zwei Dateien mit diff
Ich würde gerne Zusammenführen von zwei Dateien, indem Sie Folgendes tun:
- Ausgabe der diff der beiden Dateien in eine temp-Datei und
- Manuell wählen Sie die Zeilen, möchte ich kopieren/speichern.
Hier das problem, dass diff -u
nur gibt mir eine Datei Zeilen Kontext, während ich ausgeben wollen, die gesamte Datei in ein einheitliches format.
Gibt es eine Möglichkeit, diff dies tun können?
- Ich kenne eine Menge Leute, wie die Benutzung von vim in den diff-Modus, um dies zu tun, und es gibt ein paar plugins, die drei Puffer (alten -, merge -, 'new') besser funktionieren.
- Was ist das problem? Löschen Sie einfach die Teile des Patches, die Sie nicht haben wollen und dann patch die Datei. Beachten Sie außerdem über git cherry picking. Das ist genau das, was Sie tun möchten
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Ich möchte die Ausgabe wird die gesamte Datei in ein einheitliches format. Gibt es eine Möglichkeit, diff dies tun können?"
Ja.
Sollte dies funktionieren, vorausgesetzt, dass Ihre Dateien sind weniger als 10 Millionen Zeilen lang.
+
und-
Zeichen vor der diff-Zeilen in der zusammengeführten DateiEine option, die könnte passen die Rechnung für Sie,
sdiff
: side-by-side diff " - Dateien.sdiff -o merged.file left.file right.file
Einmal dort, werden Sie aufgefordert, mit dem, was Linien, die Sie behalten möchten, aus welcher Datei. Treffer
?
und dannenter
für ein wenig Hilfe. Auchman sdiff
mit der detaillierten waren.(In meiner distro, diese kommen verpackt in die "diffutils" - Paket [fedora,centos])
Wenn Sie brauchen, um den Prozess zu automatisieren, möchten Sie vielleicht versuchen Sie die util -
merge
, die mark Konflikte in den Dateien. Allerdings könnten Sie wieder auf Platz eins.Können fusionieren/kombinieren Sie die beiden Dateien mit diff mit der Option --
Die einfache Antwort ist die Verwendung der-D Option, um die Dateien Zusammenführen und die surround-Unterschiede mit C-Stil #ifdef-Anweisungen.
Aus der Dokumentation:
Können Sie es verwenden, wie folgt:
Ich in der Regel dann öffnen Sie die zusammengeführte Datei in einem editor, und lösen Sie den merge-Konflikte mit der hand.
Können Sie auch Optionen, um die Ausgabe ein ed-Skript, etc.
Wenn Sie ein emacs-Benutzer sind, können Sie dies direkt in emacs mit dem "emerge" - tool:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Emerge.html
Ausstellung
M-x emerge-files
öffnet eine interaktive Eingabeaufforderung mit einer Ansicht der Dateien A, B, und die zusammengeführte Datei zu erlauben, wählen Sie text, unterscheidet sich zwischen den Dateien A & B, einlegen Teil von A in B, und mehr.