Gibt es eine git-merge --dry-run Option?
Ich bin das Zusammenführen in einen remote-branch, kann eine Menge von Konflikten. Wie kann ich feststellen, ob es Konflikte oder nicht?
Ich nicht etwas sehen wie ein --dry-run
auf git-merge
.
InformationsquelleAutor der Frage Otto | 2009-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits erwähnt, pass in die
--no-commit
Flagge, aber zu vermeiden, eine fast-forward commit, auch in--no-ff
:Untersuchen die bereitgestellte änderungen:
Und können Sie rückgängig die merge, auch wenn es ein fast-forward-merge:
InformationsquelleAutor der Antwort mipadi
Hatte ich nur um eine Methode zu implementieren, die automatisch findet die Konflikte zwischen einem repository und dem remote. Diese Lösung hat den merge in den Speicher, so dass es gewann ' T berühren Sie den index, noch die Arbeits-Baum. Ich denke, dies ist die sicherste Möglichkeit können Sie dieses problem lösen. Hier ist, wie es funktioniert:
git fetch origin master
git merge-base FETCH_HEAD master
git merge-tree mergebase master FETCH_HEAD
(mergebase wird die hexadezimale id, dass die merge-base im vorherigen Schritt gedruckt haben)Nehmen wir nun an, Sie Zusammenführen möchten, müssen Sie die remote-master mit Ihrem lokalen master -, aber Sie können beliebige Zweige.
git merge-tree
ausführen des merge-in-Speicher und drucken Sie das Ergebnis auf die standard-Ausgabe. Grep nach dem Muster<<
oder>>
. Oder Sie drucken die Ausgabe in eine Datei, und überprüfen, dass. Wenn Sie eine Zeile beginnend mit 'verändert, in beiden" dann sind die meisten wahrscheinlich gibt es einen Konflikt.InformationsquelleAutor der Antwort akostajti
My brute-force-einfache Lösung für dieses ist:
1: erstellen einer pre-master-Zweig (von master natürlich)
2: merge all die Dinge, die Sie tun, um das pre-master
dann können Sie sehen, wie die Zusammenführung geschehen, ohne sich zu berühren master dann.
3a: merge pre-master zu master oder
3b: führen Sie alle Möchtegern-veröffentlicht Filialen in master
Trotzdem würde ich follow @orange80 beraten.
InformationsquelleAutor der Antwort hades
Rückgängigmachen einer merge mit git ist so einfach, Sie sollten sich keine sorgen über die trockenen laufen:
EDIT: Wie bereits unten in den Kommentaren, wenn Sie änderungen in Ihrem Arbeitsverzeichnis oder staging-Bereich, werden Sie wahrscheinlich wollen, zu verstauen Sie, bevor Sie die oben genannten (ansonsten verschwinden Sie nach der
git reset
oben)InformationsquelleAutor der Antwort Brian Phillips
Machte ich einen alias für die zu tun, und funktioniert wie ein Charme, ich mache Folgendes:
Jetzt muss ich nur rufen
Finden Sie heraus, ob es irgendwelche Konflikte.
InformationsquelleAutor der Antwort Okonomiyaki3000
Nur diff aktuellen branch an den remote-branch, dies wird Ihnen sagen, was Los ist zu ändern, wenn Sie führen Sie eine pull/merge.
InformationsquelleAutor der Antwort timh
Ich die Anfrage-pull git-Befehl, dies zu tun. Es ermöglicht Ihnen zu sehen, jede änderung, die geschehen würden, wenn die Verschmelzung, aber ohne etwas zu tun, die auf Ihrem lokalen oder remote-repositories.
Beispielsweise vorstellen, die Sie Zusammenführen möchten eine Niederlassung namens "feature-x" in Ihren master branch
zeigen Sie eine Zusammenfassung von dem, was passieren würde (ohne etwas zu tun):
Wenn Sie fügen Sie die
-p
parameter, erhalten Sie auch den vollständigen patch-text, genau wie wenn du ein git diff auf jede veränderte Datei.InformationsquelleAutor der Antwort ArnaudR
Ich bin überrascht, niemand hat vorgeschlagen, patches noch.
Sagen, Sie möchten, um zu testen, eine Zusammenführung von
your_branch
inmaster
(ich nehme an, Sie habenmaster
ausgecheckt):Sollte den trick tun.
Wenn Sie Fehler wie
das bedeutet, dass der patch nicht erfolgreich war und eine merge-Konflikte erzeugen würde. Keine Ausgabe bedeutet, dass der patch sauber ist, und Sie würden in der Lage sein leicht die Zweig
Beachten Sie, dass dies nicht tatsächlich ändern Sie Ihre Arbeits-Baum (abgesehen vom erstellen der patch-Datei, natürlich, aber Sie können sicher löschen, dass danach). Aus dem git-apply-Dokumentation:
Hinweis: um wer ist schlauer/erfahrener mit git als mir: bitte lassen Sie mich wissen, wenn ich falsch bin, und hier diese Methode zeigen, nicht anders Verhalten, als bei einer normalen Zusammenführung. Es scheint seltsam, dass in der 8+ Jahre, die diese Frage existiert hat, niemand würde vorschlagen, dieses naheliegende Lösung.
InformationsquelleAutor der Antwort HackerCow
Könnte dies interessant sein: Aus der Dokumentation:
Aber Sie könnte es auch tun, die naive (aber langsam) Weg:
(Hinweis: Es wird nicht funktionieren, einfach Klonen nach /tmp, brauchen Sie eine Kopie, um sicher zu sein, dass nicht festgeschriebene änderungen, die keinen Konflikt).
InformationsquelleAutor der Antwort
Ich bin mir bewusst, dass dies ist eine alte Frage, aber es ist der erste, erscheinen auf einer Google-Suche.
Git eingeführt --ff-only option, bei der Zusammenführung.
Dies zu tun wird versuchen, Sie zu verschmelzen, und schnell vorwärts, und wenn es nicht bricht er ab und fordert Sie, dass der schnelle Vorlauf nicht durchgeführt werden konnten, lässt aber Ihren Zweig unberührt. Wenn es schnell vorwärts, dann wird es führen Sie den merge auf Ihren Zweig. Diese option ist auch verfügbar auf
git pull
. So könnten Sie Folgendes tun:InformationsquelleAutor der Antwort
Ich verwende git log zu sehen, was sich verändert hat auf einem feature-branch vom master branch
z.B. - um zu sehen, welche verpflichtet sind, die in einem feature-branch, die hat/nicht zusammengeführt wurden, um master:
InformationsquelleAutor der Antwort nelsonenzo
Wenn Sie möchten, im schnellen Vorlauf von B nach A, dann müssen Sie sicherstellen, dass git log B..Eine zeigt Sie nichts, d.h. nichts, dass B nicht haben. Aber auch wenn B..Eine hat etwas, man könnte immer noch zusammenkommen können, ohne Konflikte, so dass die oben zeigt zwei Dinge: dass es ein schnell vorwärts, und damit Sie nicht einen Konflikt erhalten.
InformationsquelleAutor der Antwort Erik Allik
Stellen Sie eine temporäre Kopie Ihrer Arbeitskopie, dann verschmelzen, und diff die zwei.
InformationsquelleAutor der Antwort vanboom