146 Stimmen

Git Diff mit Beyond Compare

Es ist mir gelungen, Git dazu zu bringen, Beyond Compare 3 als Vergleichstool zu starten. Wenn ich jedoch einen Vergleich durchführe, wird die Datei, mit der ich vergleiche, nicht geladen. Es wird nur die neueste Version der Datei geladen und sonst nichts, so dass im rechten Fenster von Beyond Compare nichts angezeigt wird.

Ich verwende Git 1.6.3.1 mit Cygwin und Beyond Compare 3. Ich habe Beyond Compare so eingerichtet, wie sie es im Support-Teil ihrer Website mit einem Skript wie diesem vorschlagen:

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"path_to_bc3_executable" "$2" "$5" | cat

Ist noch jemand auf dieses Problem gestoßen und kennt eine Lösung dafür?

Edita:
Ich habe die Vorschläge von VonC befolgt, aber ich habe immer noch genau das gleiche Problem wie zuvor. Ich bin ziemlich neu in Git, also vielleicht benutze ich das diff nicht richtig.

Ich versuche zum Beispiel, die Differenz einer Datei mit einem Befehl wie diesem zu sehen:
git diff main.css

Beyond Compare wird dann geöffnet und zeigt im linken Bereich nur meine aktuelle main.css an, im rechten Bereich ist nichts zu sehen. Ich möchte meine aktuelle main.css im linken Fenster mit der HEAD-Datei vergleichen, also mit dem, was ich zuletzt übertragen habe.

Meine git-diff-wrapper.sh sieht wie folgt aus:

#!/bin/sh  
# diff is called by git with 7 parameters:  
# path old-file old-hex old-mode new-file new-hex new-mode  
"c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat

Meine Git-Konfiguration sieht für Diff so aus:

[diff]  
external = c:/cygwin/bin/git-diff-wrapper.sh

9voto

Oded BD Punkte 2038

Zur Verwendung von beyond compare in MAC OSX müssen Sie Folgendes tun: Installieren Sie die beyond compare Befehlszeilentools über das Menü:

enter image description here

Dann müssen Sie diese Befehle ausführen:

git config --global diff.tool bc3

git config --global merge.tool bc3
git config --global mergetool.bc3.trustExitCode true

Danach können Sie Folgendes ausführen git mergetool in den Ordner mit dem Git-Konflikt und BC wird wie erwartet funktionieren

6voto

nachonachoman Punkte 752

Hier ist meine Konfigurationsdatei. Es hat etwas gedauert, aber jetzt funktioniert es. Ich verwende Windows Server, msysgit und beyond compare 3 (offenbar eine x86-Version). Sie werden feststellen, dass ich keine Argumente angeben muss, und ich verwende "path" anstelle von "cmd".

[user]
        name = PeteW
        email = petew@petew.com
[diff]
        tool = bc3
[difftool]
        prompt = false
[difftool "bc3"]
        path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
[merge]
        tool = bc3
[mergetool]
        prompt = false
        keepBackup = false
[mergetool "bc3"]
        path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
        trustExitCode = true
[alias]
        dt = difftool
        mt = mergetool

5voto

Mark Conway Punkte 363

Es sieht so aus, als ob BC3 nur die 3-Wege-Zusammenführung für die PRO Edition unterstützt. http://www.scootersoftware.com/moreinfo.php?zz=kb_editions

5voto

sarabdeep singh Punkte 808

Wenn Sie Windows 7 (Professional) und Git für Windows (Version 2.15 oder höher) verwenden, können Sie einfach den folgenden Befehl ausführen, um herauszufinden, welche verschiedenen Diff-Tools von Ihrem Git für Windows unterstützt werden

git difftool --tool-help

Sie erhalten eine ähnliche Ausgabe wie die folgende

git difftool --tool=' kann auf einen der folgenden Werte gesetzt werden:
v vimdiff2 vimdiff3

es bedeutet, dass Ihr Git nicht unterstützt (kann nicht finden) über vergleichen als difftool gerade jetzt.

Damit Git beyond compare als gültiges Difftool erkennen kann, sollten Sie über Beyond Compare Installationsverzeichnis in Ihrem System Pfad Umgebungsvariable. Sie können dies überprüfen, indem Sie bcompare von der Shell aus ausführen (cmd, git bash oder powershell. Ich verwende Git Bash). Wenn Beyond Compare nicht startet, fügen Sie sein Installationsverzeichnis hinzu (in meinem Fall, C:\Program Dateien \Beyond Vergleichen Sie 4) mit Ihrer Systempfadvariable. Starten Sie danach Ihre Shell neu. Git wird Beyond Compare als mögliche Difftool-Option anzeigen. Sie können einen der folgenden Befehle verwenden, um Beyond Compare als Difftool zu starten (zum Beispiel, um eine lokale Datei mit einem anderen Zweig zu vergleichen)

git difftool -t bc branchnametocomparewith -- path-to-file
or 
git difftool --tool=bc branchnametocomparewith -- path-to-file

Sie können beyond compare mit den folgenden Befehlen als Standard-Diffstool konfigurieren

   git config --global diff.tool bc

P.S. Denken Sie daran, dass bc im obigen Befehl bc3 oder bc sein kann, je nachdem, was Git aus Ihrer Pfad-Systemvariable herausfinden konnte.

5voto

mitaka Punkte 2099

Update für BC4 64bit: Dies funktioniert für Git für Windows v.2.16.2 und Beyond Compare 4 - v.4.2.4 (64bit Edition)

Ich habe die Datei .gitconfig, die sich in meinem Benutzer-Root befindet, manuell bearbeitet " C:\Users\MyUserName " und ersetzte die Tags diff/difftool und merge/mergetool durch

[diff]
  tool = bc
[difftool "bc"]
  path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[difftool "bc"]
  cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$LOCAL\" \"$REMOTE\"
[difftool]
  prompt = false
[merge]
  tool = bc
[mergetool "bc"]
  path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[mergetool "bc"]
  cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X