web-dev-qa-db-fra.com

Remplacer le choix du fichier binaire par git en texte

J'ai vu plusieurs questions demandant comment faire git traiter un fichier texte comme binaire, mais je n'ai pas encore vu le contraire:

Comment puis-je changer le choix de git de traiter un fichier texte comme binaire? J'ai un fichier texte où dans certaines chaînes de configuration, un EOT et ETX est utilisé pour séparer des parties des paramètres de configuration.

Par exemple, le code source contient des lignes comme celle-ci:

INPUT 'ScrollRemote[EOT]no[ETX]NumDown[EOT]0[ETX]CalcWidth[EOT]no[ETX]MaxWidth[EOT]80[ETX]FetchOnReposToEnd[EOT]yes[ETX].....'
50
RonaldB

La façon dont les fichiers sont réellement stockés dans le référentiel Git n'est pas pertinente pour la façon dont ils sont traités lorsqu'ils sont affichés. Alors le git diff, lorsqu'on lui demande de comparer deux fichiers, obtient d'abord les deux fichiers complets du référentiel, puis exécute un algorithme de différence par rapport à eux.

Normalement, git diff recherche des caractères non imprimables dans les fichiers et s'il ressemble au fichier comme étant probablement un fichier binaire, il refuse de montrer la différence . La raison en est que les différences de fichiers binaires ne seront probablement pas lisibles par l'homme et gâcheront probablement votre terminal si elles sont affichées.

Cependant, vous pouvez demander à git diff pour toujours traiter les fichiers comme du texte à l'aide de --text option. Vous pouvez le spécifier pour une commande diff:

git diff --text HEAD HEAD^ file.txt

Vous pouvez faire en sorte que Git utilise toujours cette option en configurant un .gitattributes fichier contenant:

file.txt diff

L'attribut diff signifie ici:

Un chemin sur lequel l'attribut diff est défini est traité comme du texte, même lorsqu'il contient des valeurs d'octets qui n'apparaissent normalement jamais dans les fichiers texte, tels que NUL.

66
Greg Hewgill

Regardez Git Attributes - ils peuvent vous aider en spécifiant qu'une certaine extension de fichier doit être traitée comme du texte.

6
Mark Leighton Fisher

Si vous essayez de comparer ou de fusionner des fichiers texte et que git dit que ce sont des fichiers binaires, ils peuvent simplement avoir un codage différent (par exemple UTF-8 et ANSI). Voir le réponse que j'ai donnée sur ce post .

2
deadlydog