Merge
# Merge

Merge [mɝːdʒ] (von englisch to merge ‚verschmelzen‘, ‚vereinigen‘, ‚zusammenführen‘) ist der Vorgang des Abgleichens mehrerer Änderungen, die an verschiedenen Versionen derselben Datei getätigt wurden. Das Zusammenführen verschiedener Datei-Versionen ist ein zentraler Vorgang bei den meisten Versionsverwaltungssystemen, weshalb diese meist unterschiedliche Merge-Algorithmen unterstützen. Viele Versionsverwaltungssysteme werden zudem mit grafischen Hilfsprogrammen ausgeliefert, die das Mergen vereinfachen sollen.

Der Terminus „Merge“ wird in der Softwaretechnik oftmals unverändert als Verb mergen („Sie wird die Veränderungen mergen“), aber auch als Substantiv verwendet („Dieser Merge wird viele Konflikte verursachen“).

## Grundlagen

Das Zusammenführen verschiedener Datenbestände (Replikation) ist notwendig, wenn der entsprechende Datenbestand von verschiedenen Personen oder Prozessen zur selben Zeit verändert wurde. Dies tritt auf, wenn gleichzeitig an einem Datenbestand gearbeitet wird oder wenn die Datenbestände an getrennten Orten geführt wurden und wieder auf gemeinsamen Stand gebracht werden (synchronizing).

Das Ergebnis eines Merge-Vorgangs ist ein einziger Datenbestand, der alle Aspekte der verschiedenen Versionen an Datenbeständen vereinigt. Der Abgleich dieser Datenbestände heißt Merge-Replikation und kann mit gleichrangigen Versionen oder nachrangigen Versionen (master/slave merge, etwa beschleunigte Sicherungsstrategien) erfolgen. In vielen Fällen gelingt der Merge-Vorgang automatisch, ohne menschliche Interaktion. Werden jedoch verschiedene Änderungen zusammengeführt, die das gleiche Subset eines Datenbestandes betreffen, so kommt es zu einem Merge-Konflikt. Dieser kann nur manuell aufgelöst werden.

Klassische Fälle von Merging sind das Zusammenführen von Textdateien (string merging) oder das Zusammenführen von Verzeichnisstrukturen.

## Eigenständige Merge-Werkzeuge

### Plattformübergreifend

* KDiff3 – Open Source – KDE
* Meld – Open Source – Gnome
* TkDiff – Open Source

### Linux

* merge – Open Source

### Windows

* WinMerge – Open Source
* ExamDiff – proprietär, kostenlose Basisversion
