Der Trick besteht darin, "eine Version zum Index hinzuzufügen": das würde die Datei als gelöst markieren (also nicht mehr "unsere" oder "ihre").
Also muss es der letzte Schritt sein.
Vielleicht so etwas wie:
git show :3:<filename> > <filename>.theirs # save the "theirs" version in a tmp file
git show :2:<filename> > <filename> # display the "ours" version in the working dir
git add <filename> # add it to the index
# (marking the conflicting file as resolved)
move <filename>.theirs <filename> # erasing the file with the "theirs" version
# in the working directory
Nicht gerade "schmerzlos" ...
die temporäre Datei zu vermeiden, schlägt Jakub Narębski mit git update index
(ein Sanitär-Befehl) direkt zu manipulieren Der Index.
--replace --cacheinfo <mode> <object> <path>
--cacheinfo
wird verwendet, um eine Datei zu registrieren, die nicht im aktuellen Arbeitsverzeichnis ist. Dies ist nützlich für das Zusammenführen von Mindestabfragen.
Wenn ein Dateipfad im Index vorhanden ist, verweigert git update-index standardmäßig den Versuch, path/file
hinzuzufügen. Wenn eine Datei path/file
vorhanden ist, kann ein Dateipfad nicht hinzugefügt werden. Mit dem Flag --replace
werden vorhandene Einträge, die mit dem hinzuzufügenden Eintrag in Konflikt stehen, automatisch mit Warnmeldungen entfernt.
Eigentlich ist es "unsere" Version (aus dem aktuellen Zweig in die Sie zusammenführen), "ihre" Version (aus dem Zweig, den Sie zusammenführen), und "Vorfahren" Version (gemeinsamer Vorfahr beider Zweige) - nicht frühere Version in Allgemeines. –