2012-12-20 8 views
6

Mögliche Duplizieren:
Git - how to force merge conflict and manual merge on selected fileGit-Dateien während einer Zusammenführung überschreibt - zeigt keine Konflikte

Wir versuchen, eine Zusammenführung zwischen zwei Zweigen zu tun: stabilem Code und neuen Funktionen .

Die Zusammenführungsfunktionalität funktioniert nicht für uns: Sie zeigt manchmal Konflikte, aber oft überschreibt sie Dateien, ohne uns einen Konflikt mitzuteilen, wahrscheinlich mit der, die sie für die richtige Version hält.

Kann dieses Überschreiben blockiert werden, so dass es alle widersprüchlichen Zeilen anzeigt? Wir haben versucht, mit git diff eine Vorstellung davon zu bekommen, wie umfangreich es war, aber es gibt ein paar tausend Zeilen, weil wir auf unserem stabilen Zweig ziemlich ausführlich debuggen mussten ... Also müssten wir die Merge-Funktionalität wirklich funktionieren lassen, wenn irgend möglich .

Wir sind also in einer chaotischen Situation, ich werde alle Hilfe sehr zu schätzen wissen.

Antwort

2

Da ich nicht weiß, wie Sie Ihr Problem reproduzieren, muss ich ein paar Ratespiele machen.

Nach meiner Erfahrung kann Verwirrung um Git Merge in der Regel reduziert werden, indem Sie eine git pull --rebase vor der Zusammenführung tun. Dadurch werden die neuesten Änderungen aus der Ferne abgerufen und die Änderungen werden über sie zusammengeführt. Tun Sie dies jedoch nicht, wenn Sie beabsichtigen, Ihre Änderungen gegenüber einem früheren Commit zusammenzuführen. Notieren Sie sich in jedem Fall die letzte Commit-ID, bevor Sie die pull ausführen, damit Sie im Falle eines Problems darauf zurückgreifen können.

Wenn Sie jetzt zur Zusammenführung kommen, können Sie versuchen, git merge --no-ff --no-commit zu verwenden, um zu verhindern, dass die Zusammenführung festgeschrieben wird. Ich weiß nicht, ob Sie damit den vollständigen Konfliktbericht erhalten würden, den Sie sehen möchten, aber Sie können das Zusammenführungsergebnis (wie einen Simulationsmodus) untersuchen. Wenn Ihnen das Ergebnis nicht gefällt, können Sie die Zusammenführung wiederherstellen, indem Sie git reset --hard verwenden.

1

Was Sie tun können, ist die Zusammenführung als laufen:

git merge --no-commit --no-ff your-branch 

Dies wird nicht eine Zusammenführung begehen oder Vorspulen der Master erstellen, sondern einfach die fusionierte Dateien in Ihrem Arbeitsverzeichnis setzen. Sie können die Änderungen prüfen. Sobald Sie zufrieden sind, können Sie eine git commit tun oder durch git reset --hard

+0

wiederherstellen Dank ShadyKiller und ap. für Ihre Lösungen. Sie geben uns einen Anhaltspunkt dafür, wie man es lösen kann, aber es scheint, dass selbst mit dieser Merge-Methode ein Teil des Codes einfach ignoriert wird, ohne dass die Änderungen erscheinen. Wir versuchen herauszufinden, warum. Wir werden hier zurück posten, wenn wir weiter kommen können. Danke noch einmal. –

+0

Hallo @EricHiland wir sind auch mit dem gleichen Problem konfrontiert. Hast du ein Update dazu? –