git meldet Merge-Konflikt ohne Änderungen, leere Zeilen (unter Verwendung von git-subtree)

Lesezeit: 2 Minuten

Ich teste die Verwendung von git-Unterbaum um ein Bibliotheksrepo in ein größeres Projekt zusammenzuführen. Es scheint im Prinzip großartig zu sein. Manchmal, wenn ich einen “Git-Subtree-Pull” durchführe, erhalte ich Merge-Konflikte wie diese:

<<<<<<< HEAD
=======
An inserted line from the lib repo
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

Das gilt für eine Änderung, die im Bibliotheksrepo vorgenommen wurde und in eine Datei zusammengeführt wurde, die nicht lokal geändert wurde. Oder ein anderes Beispiel, bei dem ich eine Zeile im lokalen Projekt-Repository hinzugefügt habe, aber in einer Datei, die Teil des zusammenzuführenden Teilbaums ist:

<<<<<<< HEAD
Another inserted line
=======
>>>>>>> 4d348903449ebb584ab224cb34c6038fbf6b352d

Warum würde Git diese als Zusammenführungskonflikte melden, aber die als Konflikt gemeldete Region ist leer? Irgendeine Möglichkeit, es zu verhindern?

Diese sind leicht zu lösen, bringen aber den Git-Subtree-Workflow durcheinander

  • Stellen Sie sicher, dass Ihre Zeilenenden in allen Repositories (Linux, Windows, Mac) gleich sind.

    – Strickl

    29. Dezember 2011 um 22:25 Uhr

  • Ich denke, das ist (im zweiten Beispiel) passiert, wenn die lokal geänderte Datei ein Änderungsdatum hat, das länger ist als das der zusammengeführten Version.

    – Малъ Скрылевъ

    27. November 2013 um 8:44 Uhr

Es ist keine Lösung für Ihr Grundproblem, sondern eher eine Milderung davon. Sie können verwenden
git merge -Xignore-space-change

Raumänderungen in Ihren Commits zu ignorieren.

Es ist wahrscheinlich ein Problem mit Ihren Zeilenenden. Sie können versuchen, a --dry-run alternativ in zusammenführen (git merge hat nicht --dry-run Möglichkeit):

$git merge -Xignore-space-change --no-commit --no-ff $BRANCH

um die Änderungen zu sehen, bevor Sie sie tatsächlich festschreiben.

Verwenden Sie Submodule, um gemeinsame Arbeit zu speichern. Es gibt git-slave, wenn Sie viel mit geteilten und nicht geteilten Projekten arbeiten, die koordiniert werden müssen. Ihre Speicherdisparität am Zeilenende wird verschwinden.

  • Abgestimmt, weil ich nach der Verwendung von git-subtree gefragt habe, nicht nach der Verwendung von Submodulen. Und es gibt keine Beweise dafür, dass dies etwas mit Zeilenenden zu tun hat

    – Jeremy Slade

    28. Januar 2012 um 21:11 Uhr

1056850cookie-checkgit meldet Merge-Konflikt ohne Änderungen, leere Zeilen (unter Verwendung von git-subtree)

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy