J'ai essayé msysGit et Git sur Cygwin. Les deux fonctionnent très bien en eux-mêmes et exécutent parfaitement gitk et git-gui.
Maintenant, comment diable puis-je configurer un mergetool? (Vimdiff fonctionne sur Cygwin, mais de préférence je voudrais quelque chose d'un peu plus convivial pour certains de nos collègues amoureux de Windows.)
Réponses:
Pour faire le suivi de la réponse de Charles Bailey, voici ma configuration git qui utilise p4merge (outil de fusion multiplateforme 3 voies gratuit); testé sur l'installation de msys Git (Windows):
ou, à partir d'un shell Windows cmd.exe, la deuxième ligne devient:
Les changements (par rapport à Charles Bailey):
Téléchargement: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
EDIT (févr.2014)
Comme l'a souligné @Gregory Pakosz , le dernier msys git prend désormais "nativement" en charge p4merge (testé sur 1.8.5.2.msysgit.0 ).
Vous pouvez afficher la liste des outils pris en charge en exécutant:
Vous devriez voir p4merge dans la liste disponible ou valide . Sinon, veuillez mettre à jour votre git.
Si p4merge était répertorié comme disponible , il se trouve dans votre PATH et vous n'avez qu'à définir merge.tool :
S'il était répertorié comme valide , vous devez définir mergetool.p4merge.path en plus de merge.tool :
~
devrait s'étendre au répertoire personnel de l'utilisateur actuel (donc en théorie, le chemin devrait être~/AppData/Local/Perforce/p4merge.exe
), cela n'a pas fonctionné pour moi$LOCALAPPDATA/Perforce/p4merge.exe
), git ne semble pas étendre les variables d'environnement pour les chemins (si vous savez comment faire fonctionner cela, veuillez me le faire savoir ou mettre à jour cette réponse)la source
mergetool.p4merge.cmd
ne fonctionnera plus depuis que Git a commencé à essayer de prendre en charge p4merge, voirlibexec/git-core/git-mergetool--lib
. à la place, il utilise directementmergetool.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'
sur la machine Windows 7définir mergetool.p4merge.cmd ne fonctionnera plus depuis que Git a commencé à essayer de prendre en charge p4merge, voir libexec / git-core / git-mergetool--lib.so nous avons juste besoin de spécifier le chemin mergetool pour git, par exemple le p4merge:
Ensuite, cela fonctionnera.
la source
J'utilise Portable Git sur WinXP (ça marche un régal!), Et j'avais besoin de résoudre un conflit survenu lors de la création de branches. De tous les gui que j'ai vérifiés, KDiff3 s'est avéré être le plus transparent à utiliser.
Mais j'ai trouvé les instructions dont j'avais besoin pour le faire fonctionner dans Windows dans ce billet de blog , des instructions qui diffèrent légèrement des autres approches répertoriées ici. Cela revenait essentiellement à ajouter ces lignes à mon
.gitconfig
fichier:Fonctionne bien maintenant!
la source
path = C:\\Program Files (x86)\\KDiff3\\kdiff3.exe
(remarquez les doubles barres obliques)Sous Cygwin, la seule chose qui a fonctionné pour moi est la suivante:
De plus, j'aime désactiver le message d'invite pour difftool:
la source
git mergetool
est entièrement configurable pour que vous puissiez à peu près choisir votre outil préféré.La documentation complète est ici: http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html
En bref, vous pouvez définir un mergetool par défaut en définissant la variable de configuration utilisateur
merge.tool
.Si l'outil de fusion est l'un de ceux pris en charge nativement par lui, il vous suffit de définir
mergetool.<tool>.path
le chemin d'accès complet à l'outil (à remplacer<tool>
par ce que vous avez configurémerge.tool
pour être.Sinon, vous pouvez définir
mergetool.<tool>.cmd
un peu de shell à évaluer au moment de l'exécution avec les variables de shell$BASE, $LOCAL, $REMOTE, $MERGED
définies dans les fichiers appropriés. Vous devez être un peu prudent avec l'échappement si vous modifiez directement un fichier de configuration ou définissez la variable avec lagit config
commande.Quelque chose comme ça devrait donner la saveur de ce que vous pouvez faire ('mymerge' est un outil fictif).
Une fois que vous avez configuré votre outil de fusion préféré, il suffit de lancer
git mergetool
chaque fois que vous avez des conflits à résoudre.L'outil p4merge de Perforce est un très bon outil de fusion autonome.
la source
Au-delà de la comparaison sur Windows 7
la source
Il semble que les nouvelles versions de git prennent directement en charge p4merge, donc
devrait être tout ce dont vous avez besoin, si p4merge.exe est sur votre chemin. Pas besoin de configurer cmd ou chemin.
la source
Comme déjà répondu ici (et ici et ici ), mergetool est la commande pour configurer cela. Pour une belle interface graphique, je recommande kdiff3 (GPL).
la source
J'ai dû abandonner les citations supplémentaires en utilisant msysGit sur Windows 7, je ne sais pas pourquoi.
la source
Si vous faites cela via cygwin, vous devrez peut-être utiliser cygpath:
la source
Bah, cela a finalement fonctionné pour moi (Windows 7 + Cygwin + TortoiseMerge):
Dans .git / config:
Merci aux affiches précédentes pour le conseil d'utilisation de cygpath!
la source
j'utilise une application appelée WinMerge ( http://winmerge.org/ ) info de leur manuel ( http://manual.winmerge.org/CommandLine.html )
c'est le script bash que j'utilise depuis la
mergetool
directive via.gitconfig
fondamentalement, le bash tient compte du résultat du diff dans un fichier vide et crée un nouveau fichier temporaire au bon endroit.
la source
J'ai trouvé deux façons de configurer " SourceGear DiffMerge " comme difftool et mergetool dans github Windows.
Les commandes suivantes dans une fenêtre d'invite de commandes mettront à jour votre .gitconfig pour configurer GIT utiliser DiffMerge:
[ OU ]
Ajoutez les lignes suivantes à votre .gitconfig. Ce fichier doit se trouver dans votre répertoire personnel dans C: \ Users \ UserName:
la source
Vous pouvez également ajouter ces options:
De plus, je ne sais pas pourquoi, mais la citation et la barre oblique de la réponse de Milan Gardian ont foiré les choses pour moi.
la source
Si quelqu'un veut utiliser gvim comme outil de diff sur TortoiseGit, alors c'est ce que vous devez entrer dans la saisie de texte pour le chemin vers l'outil de diff externe:
la source
Pour la configuration IntelliJ IDEA (Community Edition) git mergetool à 3 voies dans l'environnement Windows (
~/.gitconfig
)Cygwin
Msys
Le ~ / winpath.sh consiste à convertir les chemins vers Windows sur msys et provient de la question de conversion de chemin msys sur stackoverflow
la source
Pour configurer p4merge, installé à l'aide de chocolatey sur Windows pour la fusion et la diff, jetez un œil ici: https://gist.github.com/CamW/88e95ea8d9f0786d746a
la source
Si vous rencontrez des problèmes pour ouvrir p4merge à partir de SourceTree, recherchez votre fichier de configuration local nommé config sous MyRepo.git et supprimez toute configuration de fusion. Dans mon cas, il essayait d'ouvrir Meld que je viens de désinstaller
la source