Différence de Git avec au-delà de comparer

j'ai réussi à faire démarrer Git Beyond Compare 3 en tant qu'outil diff, mais quand je fais une diff, le fichier que je compare n'est pas chargé. Seule la dernière version du fichier est chargée et rien d'autre, donc il n'y a rien dans le volet droit de Beyond Compare.

je lance git 1.6.3.1 avec Cygwin avec Beyond Compare 3. J'ai mis en place au-delà de comparer comme ils le suggèrent dans la partie support de leur site Web avec un script comme tel:

#!/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" "" "" | cat

quelqu'un d'autre A rencontré ce problème et de savoir une solution à cela?

Edit:

J'ai suivi les suggestions de VonC mais j'ai toujours exactement le même problème qu'avant. Je suis un peu nouveau à Git alors peut-être que je ne suis pas l'utilisation de la diff correctement.

par exemple, j'essaie de voir la différence sur un fichier avec une commande comme celle-ci:

Git diff principal.css

Beyond Compare s'ouvrira alors et n'affichera que mon main courante.css dans le volet de gauche, il n'y a rien dans le volet de droite. Je voudrais le voir mon principal actuel.css dans le volet de gauche par rapport à la tête, essentiellement ce que j'ai commis en dernier.

My git-diff-wrapper.sh on dirait:

#!/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" "" "" | cat

Mon git config ressemble à ceci de Diff:

[diff]  
external = c:/cygwin/bin/git-diff-wrapper.sh
94
demandé sur Manfredo 2010-01-15 07:21:31

16 réponses

Je n'utilise pas d'emballage supplémentaire .SH files. Mon environnement est Windows XP, git 1.7.1 sur cygwin, et Beyond Compare 3. Voici mon .git/config "151930920 de fichier".

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    #use cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
[merge]
    tool = bc3
[mergetool]
    prompt = false
[mergetool "bc3"]
    #trustExitCode = true
    cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

ensuite, j'utilise $ git difftool pour comparer et $ git mergetool pour fusionner.

à propos de trustExitCode : Pour une fusion personnalisée commande, spécifiez si le code de sortie de la commande merge peut être utilisé pour déterminer si la fusion a été réussie. Si ceci n'est pas défini à true, alors l'horodatage du fichier cible de la fusion est coché et la fusion est supposée avoir réussi si le fichier a été mis à jour, sinon l'utilisateur est invité à indiquer le succès de la fusion.

118
répondu yehnan 2017-08-14 08:40:50

merci à @dahlbyk , l'auteur de Posh-Git , pour avoir posté son config as a gist . Il m'a aidé à résoudre mon problème de configuration.

[diff]
    tool = bc3
[difftool]
    prompt = false
[difftool "bc3"]
    cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = bc3
[mergetool]
    prompt = false
    keepBackup = false
[mergetool "bc3"]
    cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = true
[alias]
    dt = difftool
    mt = mergetool
27
répondu Nick Josevski 2017-08-28 18:42:42

exécutez ces commandes pour Beyond Compare 2:

git config --global diff.tool bc2
git config --global difftool.bc2.cmd "\"c:/program files (x86)/beyond compare 2/bc2.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

exécutez ces commandes pour Beyond Compare 3:

git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

puis utiliser git difftool

19
répondu user 2015-08-14 01:43:10

documentation officielle a travaillé pour moi

8
répondu Daniel Magnusson 2012-05-16 09:45:07

Voici mon fichier de configuration. Il a fallu un peu de lutte, mais maintenant ça marche. J'utilise windows server, msysgit et beyond compare 3 (apparemment une version x86). Vous remarquerez que je n'ai pas besoin de spécifier d'arguments, et j'utilise "path" au lieu de "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
5
répondu nachonachoman 2012-10-10 13:39:59

Le au-Delà de Comparer la page de support est un peu bref.

Vérifier mon diff.réponse externe pour plus (concernant la syntaxe exacte)

extrait:

$ git config --global diff.external <path_to_wrapper_script>

à l'invite de commande, remplaçant par le chemin vers " git-diff-wrapper.sh ", donc votre ~/.gitconfig contient

-->8-(snip)--
[diff]
    external = <path_to_wrapper_script>
--8<-(snap)--

assurez-vous d'utiliser la syntaxe correcte pour spécifier les chemins vers le script d'enrubannage et l'outil diff, c'est-à-dire utiliser forward slashed au lieu de backslashes. Dans mon cas, j'ai

[diff]
    external = c:/Documents and Settings/sschuber/git-diff-wrapper.sh

dans .gitconfig et

"d:/Program Files/Beyond Compare 3/BCompare.exe" "" "" | cat

dans le script d'emballage.


Note: Vous pouvez également utiliser git difftool .

4
répondu VonC 2017-05-23 12:10:38

il semble que BC3 ne supporte que 3 way merge pour PRO Edition. http://www.scootersoftware.com/moreinfo.php?zz=kb_editions

4
répondu Mark Conway 2013-11-19 01:39:33

s'il vous plaît noter que vous faites un chemin erroné de 2$. parce que vous êtes sous Cygwin mais pas sous BC3, vous devez donc spécifier un chemin complet pour cela. comme "d:/cygwin $ 2"

s'il vous Plaît consulter mon git-diff-wrapper.sh ici:

$ cat ~/git-diff-wrapper.sh
#!/bin/sh
echo 
echo 
/cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "d:/programs/cygwin" ""

bonne chance.

3
répondu z33 2010-04-06 04:49:03

http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git / a une solution que j'ai adoptée pour travailler pour BeyondCompare: http://gist.github.com/564573

1
répondu Vincent Scheib 2010-09-03 21:45:24

exécutez ces commandes pour Beyond Compare 3(si le BCompare.le chemin exe est différent dans votre système, veuillez le remplacer selon le vôtre):

git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/BCompare.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.prompt false

puis utiliser git difftool

1
répondu Jerry Zhang 2015-04-07 13:15:40

mise à jour pour BC4 64bit: Cela fonctionne pour Git pour Windows v. 2.16.2 and Beyond Compare 4-v. 4.2.4 (64bit Edition)

j'ai édité manuellement le .gitconfig fichier situé dans mon utilisateur root "C:\Users\MyUserName" et remplacé les étiquettes diff/difftool et merge/mergetool par

[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\"
1
répondu mitaka 2018-03-26 17:01:11

si vous exécutez windows 7 (Professionnel) et Git pour Windows (v 2.15 ou supérieur), vous pouvez simplement exécuter la commande ci-dessous pour savoir ce qui sont différents outils diff pris en charge par votre Git pour Windows

git difftool --tool-help

vous verrez une sortie similaire à cette

git difftool -- tool=' peut être réglé sur l'une des valeurs suivantes:

vimdiff vimdiff2 vimdiff3

cela signifie que votre git ne supporte pas(ne peut pas trouver) au-delà de comparer comme difftool en ce moment.

pour que Git trouve beyond compare comme difftool valide, Vous devriez avoir Beyond Compare installation directory dans votre système chemin environnement variable. Vous pouvez vérifier cela en exécutant bcompare à partir de shell(cmd, git bash ou powershell. Je suis à l'aide de Git Bash). Si au-Delà de Comparer n' pas lancer, ajouter son répertoire d'installation (dans mon cas, C:\Program fichiers\Beyond Compare 4) à votre variable de chemin système. Après cela, redémarrez votre shell. Git affichera au-delà de comparer comme option difftool possible. Vous pouvez utiliser l'une des commandes ci-dessous pour lancer beyond compare as difftool (par exemple, pour comparer un fichier local avec une autre branche)

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

vous pouvez configurer beyond compare comme difftool par défaut en utilisant les commandes ci-dessous

   git config --global diff.tool bc

p. S. gardez à l'esprit que la commande bc in above peut être bc3 ou bc basée sur ce que Git a pu trouver à partir de votre variable système path.

1
répondu sarabdeep singh 2018-05-03 17:35:07

pour quelque raison que ce soit, pour moi, le fichier tmp créé par git diff a été supprimé avant d'être ouvert dans beyond compare. J'ai dû copier à un autre emplacement premier.

cp -r  "/cygdrive/c/temp"
cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp" ""
0
répondu Dustin 2010-05-28 12:15:35

La différence est dans l'exe d'être appelé: le paramétrer pour appeler bcomp.exe et ça marchera très bien. Configurez votre environnement pour appeler bcompare.exe et vous finirez avec le côté de la comparaison de votre système de révision étant vide.

0
répondu rrozema 2014-11-03 11:23:05

pour MAC après avoir fait beaucoup de recherches, ça a marché pour moi..! 1. Installer l'au-delà de comparer et ce sera installée en-dessous de lieu

/Applications/Au-Delà De\ Comparer.app / Contents / MacOS /bcomp

veuillez suivre ces étapes pour faire de bc as diff / merge tool en git http://www.scootersoftware.com/support.php?zz=kb_mac

0
répondu Sreedhar GS 2015-11-28 03:56:49

pour la version 2.15.1 de git.Windows.2 avec BC2.EXE.

la configuration ci-dessous fonctionne enfin sur ma machine.

[difftool "bc2"] cmd = \"c:/program files/beyond compare 2/bc2.exe\" ${LOCAL} ${REMOTE}

0
répondu YChi Lu 2017-12-06 18:18:44