Ignorer * tous * les changements d'espaces avec git-diff entre commits
Je passe en revue une base de code, corrige des bizarreries d'espaces et corrige généralement l'indentation, etc., et je veux m'assurer que je n'ai pas apporté d'autres modifications par inadvertance. Je fais donc git diff -w
Pour afficher les différences de tous les fichiers modifiés tout en ignorant les différences d'espaces. Le problème est que ce n’est pas réellement ignorer toutes les différences d’espace, du moins ce que [~ # ~] i [ ~ # ~] considère qu'il s'agit simplement de différences d'espaces. Par exemple, dans la sortie suivante de git diff -w
,
-"Links":
-{
-
- "Thermal":
-
-{
-
+ "Links": {
+ "Thermal": {
vous pouvez voir que j'ai seulement
- suppression des lignes vierges superflues,
- mettre des accolades au bout de la ligne de la clé dont elles ouvrent la valeur, et
- en retrait pour s'adapter au contexte
Cette question semblait offrir une réponse au début, mais elle traite des différences entre deux fichiers spécifiques et non entre deux spécifique commet . Tout le reste trouvé en cherchant était également une impasse. Par exemple, cette question concerne la fusion, ne pas afficher les différences, et cette question traite de l'affichage des différences au niveau du mot, etc.
Peut-être y a-t-il une meilleure réponse, mais la meilleure solution que j'ai trouvée jusqu'à présent est la suivante.
Tout d'abord, vous devez contrôler la définition de "l'espace" utilisée par Git. Créez ou éditez le .gitconfig
dans votre projet, à inclure
[core]
whitespace = -trailing-space,-indent-with-non-tab,-tab-in-indent
Ensuite, vous devez contrôler la définition d'un mot utilisé. Au lieu d'utiliser simplement git diff -w
, ajouter --Word-diff-regex=[^[:space:]]
:
git diff -w --Word-diff-regex=[^[:space:]]
Vous verrez toujours le contexte, qui (dans mon cas, puisque j'essaie de faire en sorte qu'il n'y ait pas de différences sauf différences d'espaces)) n'est pas utile. Vous pouvez utiliser -U0
dire à Git de vous donner 0 lignes de contexte, comme si,
git diff -w -U0 --Word-diff-regex=[^[:space:]]
mais vous obtiendrez toujours une sortie qui ressemble assez au contexte, mais c'est toujours bien mieux que de parcourir toutes les modifications avec soin et manuellement pour vous assurer qu'il ne s'agit que de modifications d'espaces.
Ignore tous les espaces changent avec git-diff entre commits
Cette question semblait pouvoir offrir une réponse au début, mais elle traite des différences entre deux fichiers spécifiques et non entre deux commits spécifiques. Tout le reste trouvé en cherchant était aussi une impasse ....
Je pense que vous rencontrez des problèmes parce que Git est le mauvais outil pour ce travail. Cela ne facilite pas la tâche, et céder pour adapter l’outil est une mauvaise approche. Les outils sont supposés fonctionner pour vous et non et vice versa .
Effectuez un deuxième clone, puis vérifiez la révision de départ en question. Ensuite, lancez un diff régulier sur eux en utilisant votre révision actuelle: diff -bur --ignore-all-space <dir1> <dir2>
.
Voici certaines des options pour diff
-i, --ignore-case
ignore case differences in file contents
-E, --ignore-tab-expansion
ignore changes due to tab expansion
-Z, --ignore-trailing-space
ignore white space at line end
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
-B, --ignore-blank-lines
ignore changes where lines are all blank