Ich habe msysGit und Git auf Cygwin ausprobiert. Beide funktionieren an und für sich einwandfrei und beide laufen perfekt mit gitk und git-gui.
Wie zum Teufel konfiguriere ich ein Mergetool? (Vimdiff arbeitet mit Cygwin, aber vorzugsweise möchte ich für einige unserer Windows-liebenden Mitarbeiter etwas Benutzerfreundlicheres.)
Antworten:
Um die Antwort von Charles Bailey weiterzuverfolgen , hier ist mein Git-Setup, das p4merge (kostenloses plattformübergreifendes 3-Wege -Merge-Tool) verwendet. getestet auf der Installation von msys Git (Windows):
oder aus einer Windows-cmd.exe-Shell wird die zweite Zeile:
Die Änderungen (relativ zu Charles Bailey):
Download: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
BEARBEITEN (Februar 2014)
Wie von @Gregory Pakosz hervorgehoben , unterstützt das neueste msys git jetzt "nativ" p4merge (getestet unter 1.8.5.2.msysgit.0 ).
Sie können eine Liste der unterstützten Tools anzeigen, indem Sie Folgendes ausführen:
Sie sollten p4merge entweder in der verfügbaren oder in der gültigen Liste sehen. Wenn nicht, aktualisieren Sie bitte Ihren Git.
Wenn p4merge als verfügbar aufgeführt wurde , befindet es sich in Ihrem PFAD und Sie müssen nur merge.tool festlegen :
Wenn es wie aufgeführt war gültig , müssen Sie definieren mergetool.p4merge.path zusätzlich zu merge.tool :
~
es in das Home-Verzeichnis des aktuellen Benutzers erweitert werden sollte (theoretisch sollte der Pfad so sein~/AppData/Local/Perforce/p4merge.exe
), funktionierte dies bei mir nicht$LOCALAPPDATA/Perforce/p4merge.exe
). Git scheint Umgebungsvariablen für Pfade nicht zu erweitern (wenn Sie wissen, wie dies funktioniert, lassen Sie es mich bitte wissen oder aktualisieren Sie diese Antwort).quelle
mergetool.p4merge.cmd
funktioniert nicht mehr, da Git versucht hat, p4merge zu unterstützenlibexec/git-core/git-mergetool--lib
. stattdessen verwendet es direktmergetool.p4merge.path
cmd = \""c:/Program Files/TortoiseSVN/bin/TortoiseMerge.exe"\" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"
git config --global mergetool.p4merge.cmd '"C:\\Program Files\\Perforce\\p4merge" $BASE $LOCAL $REMOTE $MERGED'
auf Windows 7-MaschineDas Festlegen von mergetool.p4merge.cmd funktioniert nicht mehr, da Git versucht hat, p4merge zu unterstützen. Siehe libexec / git-core / git-mergetool--lib. Wir müssen also nur den mergetool-Pfad für git angeben, zum Beispiel p4merge:
Dann wird es funktionieren.
quelle
Ich verwende Portable Git unter WinXP (funktioniert ein Vergnügen!) Und musste einen Konflikt lösen, der beim Verzweigen auftrat. Von allen von mir überprüften GUI erwies sich KDiff3 als die transparenteste.
Aber ich habe in diesem Blog-Beitrag die Anweisungen gefunden, die ich brauchte, um es unter Windows zum Laufen zu bringen. Diese Anweisungen unterscheiden sich geringfügig von den anderen hier aufgeführten Ansätzen. Im Grunde ging es darum, diese Zeilen zu meiner
.gitconfig
Datei hinzuzufügen :Jetzt gut funktionieren!
quelle
path = C:\\Program Files (x86)\\KDiff3\\kdiff3.exe
(beachten Sie die doppelten Schrägstriche)Unter Cygwin, die nur Sache , die für mich gearbeitet ist die folgende:
Außerdem möchte ich die Eingabeaufforderung für difftool deaktivieren:
quelle
git mergetool
ist vollständig konfigurierbar, sodass Sie so ziemlich Ihr Lieblingswerkzeug auswählen können.Die vollständige Dokumentation finden Sie hier: http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html
Kurz gesagt, Sie können ein Standard-Mergetool festlegen, indem Sie die Benutzerkonfigurationsvariable festlegen
merge.tool
.Wenn das Zusammenführungswerkzeug eines der von ihm nativ unterstützten ist, müssen Sie nur
mergetool.<tool>.path
den vollständigen Pfad zum Werkzeug festlegen (<tool>
durch das ersetzen, was Sie konfiguriert haben)merge.tool
.Andernfalls können Sie
mergetool.<tool>.cmd
ein Stück Shell festlegen, das zur Laufzeit ausgewertet werden soll, wobei die Shell-Variablen$BASE, $LOCAL, $REMOTE, $MERGED
auf die entsprechenden Dateien eingestellt sind. Sie müssen beim Escapezeichen etwas vorsichtig sein, ob Sie eine Konfigurationsdatei direkt bearbeiten oder die Variable mit demgit config
Befehl festlegen .So etwas sollte den Geschmack dessen geben, was Sie tun können ('mymerge' ist ein fiktives Werkzeug).
Sobald Sie Ihr bevorzugtes Zusammenführungstool eingerichtet haben, müssen Sie es nur noch ausführen,
git mergetool
wenn Sie Konflikte lösen müssen.Das p4merge-Tool von Perforce ist ein ziemlich gutes eigenständiges Merge-Tool.
quelle
Für mehr als unter Windows 7 zu vergleichen
quelle
Es scheint, dass neuere Git-Versionen p4merge direkt unterstützen
sollte alles sein, was Sie brauchen, wenn p4merge.exe auf Ihrem Weg ist. Keine Notwendigkeit, cmd oder Pfad einzurichten.
quelle
Wie hier (und hier und hier ) bereits beantwortet , ist mergetool der Befehl, um dies zu konfigurieren. Für ein schönes grafisches Frontend empfehle ich kdiff3 (GPL).
quelle
Ich musste das zusätzliche Angebot mit msysGit unter Windows 7 löschen, nicht sicher warum.
quelle
Wenn Sie dies über Cygwin tun, müssen Sie möglicherweise Cygpath verwenden:
quelle
Bah, das hat endlich bei mir funktioniert (Windows 7 + Cygwin + TortoiseMerge):
In .git / config:
Vielen Dank an frühere Poster für den Tipp zur Verwendung von Cygpath!
quelle
Ich benutze eine App namens WinMerge ( http://winmerge.org/ ) Informationen aus ihrem Handbuch ( http://manual.winmerge.org/CommandLine.html )
Dies ist das Bash-Skript, das ich aus der
mergetool
Direktive über verwende.gitconfig
Grundsätzlich berücksichtigt die Bash, wann das Ergebnis des Diff in einer leeren Datei und erstellt eine neue temporäre Datei am richtigen Ort.
quelle
Ich habe zwei Möglichkeiten gefunden, " SourceGear DiffMerge " als Difftool und Mergetool in Github Windows zu konfigurieren .
Die folgenden Befehle in einem Eingabeaufforderungsfenster aktualisieren Ihre .gitconfig, um GIT mithilfe von DiffMerge zu konfigurieren:
[ ODER ]
Fügen Sie Ihrer .gitconfig die folgenden Zeilen hinzu. Diese Datei sollte sich in Ihrem Ausgangsverzeichnis unter C: \ Users \ UserName befinden:
quelle
Möglicherweise möchten Sie auch folgende Optionen hinzufügen:
Ich weiß auch nicht warum, aber das Zitieren und Schrägstrich aus Milan Gardians Antwort hat die Dinge für mich durcheinander gebracht.
quelle
Wenn jemand gvim als Diff-Tool für TortoiseGit verwenden möchte, müssen Sie Folgendes in die Texteingabe für den Pfad zum externen Diff-Tool eingeben:
quelle
Für IntelliJ IDEA (Community Edition) 3-Wege-Git-Mergetool-Konfiguration in Windows-Umgebung (
~/.gitconfig
)Cygwin
Msys
Die Datei ~ / winpath.sh dient zum Konvertieren von Pfaden in Windows auf msys und wird aus der Frage zur Konvertierung von msys- Pfaden auf stackoverflow entnommen
quelle
Schauen Sie hier, um p4merge einzurichten, das mit schokoladig unter Windows für Merge und Diff installiert wurde: https://gist.github.com/CamW/88e95ea8d9f0786d746a
quelle
Wenn Sie Probleme beim Öffnen von p4merge über SourceTree haben, suchen Sie unter MyRepo.git nach Ihrer lokalen Konfigurationsdatei config und löschen Sie alle Zusammenführungskonfigurationen. In meinem Fall wurde versucht, Meld zu öffnen, das ich gerade deinstalliert habe
quelle