Wie mache ich git automatisch öffnen Sie das mergetool wenn es einen merge-Konflikt?
Wie mache ich git automatisch ausführen git mergetool
für jeden merge-Konflikt? Dies sollte gelten für alle führt, mit merge
, rebase
, pull
usw.
- Vielleicht können Sie eine githook, z.B.
post-checkout
(ich weiß nicht, ob es tatsächlich aufgerufen wird, während ein merge.post-merge
erfordert eine erfolgreiche Zusammenführung) - Sie könnte etwas sein. Wenn Sie herausfinden können, eine funktionierende Lösung, die ich ' ll geben Sie das Kopfgeld für diese Frage.
- Ich glaube nicht, dass es existiert derzeit ein Haken, der wird ausgeführt, bevor jeweils die verschiedenen Befehle und führt zu einem verschmelzen, so rospov wrapper ist wahrscheinlich die einfachste Lösung. Oder ändern die git-source-Implementierung einer
pre-merge
hook-Funktionen, in dem Fall könnte man natürlich einfach git laufen mergetool auf Konflikte je nach config-Einstellung sowieso... - Hm, okay. Vielen Dank für die Hilfe. Ich denke, ich werde senden Sie eine patch.
- Im Fall, das Sie vorgelegt haben, ein Patch von jetzt, würde ich mich freuen, hier einen link 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dich (noch) nicht machen git dies tun.
Dies kann oder kann nicht sein eine akzeptable Lösung.
Erstellen Sie eine Funktion in Ihrem
~/.bashrc
:Mergetool ist nicht aufgerufen, wenn es geht:
Mergetool ist aufgerufen, wenn es Konflikte gibt:
Mergetool ist nicht genannt, auf andere Fehler:
git stash pop
). Da er nicht filter auf Kommando, das ist nicht ein Problem. Sie beachten sich, den aktuellen code startengit mergetool
auf alle Fehler mit 1-status.git mergetool
automatisch, und ich bezweifle stark, er kümmert sich, ob es das git oder in der shell, tun es.Konnte man immer den alias zu verwenden,
Und/oder schreiben Sie einen Helfer-Skript entlang dieser Linien
dann
Gibt es keine direkte Möglichkeit der Berufung mergetool, denn es ist nur eine von mehreren Methoden Zusammenführen (siehe "WIE man KONFLIKTE löst" Mann 1 git-merge).
mergetool
wenn es einen Konflikt gibt. Die "nur eine von mehreren Möglichkeiten, um zu fusionieren" - argument ist nicht überzeugend. Ja, es gibt mehrere Möglichkeiten, aber es ist durchaus sinnvoll zu wollen, wählen Sie eine als Standard.Soweit ich weiß, gibt es keine Porzellan Art und Weise, es zu tun.
Können Sie einen wrapper um git so aus (Datei
git_mergetool.sh
, auf Ihrem Pfad,+x
):Dann alias hinzufügen:
Jedes mal, wenn Sie aufrufen git, der wrapper prüft, ob das Wort "KONFLIKT" taucht auf. Wenn es das tut - wrapper startet mergetool.
Diese kann verbessert werden, indem mehr präzisen Satz zu
$SEARCH
(wie "Automatischer merge fehlgeschlagen; beheben Sie die Konflikte und übernehmen anschließend das Ergebnis.") sowie mit der überprüfung, ob das erste argument ($1
) ist in der Liste der Befehle, wodurch merge-Konflikt (pull
,merge
, etc...). Sonst werden Sie am Ende der Analyse einer Menge von unnötigen Daten, wenn git-Befehl-Ausgabe zu lang ist.git
(ohne Dateiendung) und legte in auf Ihrem Pfad, bevor die eigentliche git executable. Aber es ist so ziemlich nur eine andere Art von aliasing. Also Nein, ich weiß nicht, der eine Weise zu vollbringen, ohne aliasing-git.