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
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.
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
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
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
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
.
il semble que BC3 ne supporte que 3 way merge pour PRO Edition. http://www.scootersoftware.com/moreinfo.php?zz=kb_editions
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.
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
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
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\"
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.
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" ""
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.
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
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}