Je suppose que je dois mettre en place un difftool. Qu'est-ce que difftools fonctionne? Comment mettez-vous les paramètres?
Vous pouvez définir une option textconv
config pour un type de fichier. Voir "Réalisation de différences de texte de fichiers binaires" dans gitattributes (5) . Ce que vous devez utiliser dépend du type de fichier.
Exemple 1 :
Supposons que vous souhaitiez différencier le contenu des fichiers Zip. Dans ce cas, vous devez placer les éléments suivants dans le fichier $ GIT_DIR/config ou $ HOME/.gitconfig.
[diff "Zip"]
textconv = unzip -v
La prochaine fois que vous demanderez un diff sur un fichier Zip dans un référentiel, il appellera unzip -v
sur les deux versions et différera le texte obtenu.
Exemple 2 :
Pour les fichiers pdf, vous pouvez utiliser par exemple pdfinfo
;
[diff "pdf"]
textconv = pdfinfo
Exemple 3 :
S'il n'y a pas d'utilitaire d'informations spécifique pour un type de fichier, vous pouvez par exemple utilisez hexdump
(fourni avec FreeBSD et OSX, également disponible sous Linux):
[diff "bin"]
textconv = hexdump -v -C
La réponse de Roland Smith était utile mais est actuellement incomplète (voir les commentaires). Elle comporte deux parties.
Vous pouvez définir une nouvelle commande diff dans le fichier .git/config
de votre référentiel ou dans votre fichier global personnel ~/.gitconfig
, par exemple une commande hexadécimale utilisant la variable hexdump
:
[diff "hex"]
textconv = hexdump -v -C
binary = true
Ensuite, vous devez utiliser le fichier .gitattributes
du référentiel pour indiquer à git quels fichiers doivent être utilisés avec cette commande diff spéciale:
# Binary files (no line-ending conversions), diff using hexdump
*.bin binary diff=hex
Comme le fichier .gitignore
, le fichier .gitattributes
doit être archivé dans votre référentiel.
Dans mon cas, j'ai plusieurs extensions de fichier différentes que je veux traiter comme étant binaires (par exemple, éviter toute conversion de fin de ligne si vous utilisez git sous Windows), ainsi que les différences éventuelles via hexdump
:
https://github.com/peterjc/galaxy_blast/commit/5ec4695e6c3da3926fb100ca006f0f3e88c53c3d
Voir aussi https://github.com/resin-io/etcher/pull/1367 pour un autre exemple définissant une commande hexdump diff à utiliser avec des fichiers image.
Si vous voulez forcer git à afficher les fichiers binaires diff sous forme de diff en texte brut, utilisez l'option --text
comme ceci:
git diff --text