Statut Git ignore les fins de ligne / fichiers identiques / environnement Windows & Linux / dropbox / mled

Comment je fais

statut git

ignorer les différences de fin de ligne?

Informations de fond:

J’utilise au hasard Windows et Linux pour travailler sur le projet. Le projet est dans Dropbox.

J’ai beaucoup appris sur la manière dont git diff ignore les fins de ligne. Depuis que j’utilise meld git diff ouvre la fusion pour chaque fichier. Et Meld dit “fichier identique”.

Alors, comment puis-je éviter cela? Git ne doit ouvrir Meld que pour les fichiers modifiés. Et l’état de git ne doit pas signaler les fichiers modifiés si seule la fin du fichier est différente.

EDIT: Cause:

Cela est arrivé à cause de ce paramètre sous Windows

core.autocrlf true

J’ai donc vérifié la copie de travail sous Linux et défini core.autocrlf sur Windows.

Il serait toujours agréable de savoir comment faire passer git status différentes lignes nouvelles.

Essayez de définir la valeur core.autocrlf comme ceci:

git config --global core.autocrlf true 

Utilisez plutôt les atsortingbuts .git avec le paramètre suivant:

 # Ignore all differences in line endings * -crlf 

.gitatsortingbutes se trouverait dans le même répertoire que votre .gitconfig global. Si .gitatsortingbutes n’existe pas, ajoutez-le à ce répertoire. Après avoir ajouté / modifié des fichiers .gitatsortingbutes, vous devrez effectuer une réinitialisation matérielle du référentiel afin de pouvoir appliquer les modifications aux fichiers existants.

Problème lié aux commandes git sur le système d’exploitation Windows:

 $ git add --all 

attention: LF sera remplacé par CRLF dans …

Le fichier aura ses fins de ligne d’origine dans votre répertoire de travail.

Résolution :

 $ git config --global core.autocrlf false $ git add --all 

Aucun message d’avertissement ne s’affiche.

J’utilise à la fois Windows et Linux, mais la solution core.autocrlf true ne m’a pas aidé. Je n’ai même rien changé après la git checkout .

Donc, j’utilise la solution de contournement pour remplacer git statusgitstatus.sh

 #!/bin/bash git status | grep modified | cut -d' ' -f 4 | while read x; do x1="$(git show HEAD:$x | md5sum | cut -d' ' -f 1 )" x2="$(cat $x | md5sum | cut -d' ' -f 1 )" if [ "$x1" != "$x2" ]; then echo "$x NOT IDENTICAL" fi done 

Je compare simplement md5sum d’un fichier et son frère au repository.

Exemple de sortie:

 $ ./gitstatus.sh application/script.php NOT IDENTICAL application/storage/logs/laravel.log NOT IDENTICAL 

J’ai créé un script pour ignorer les différences de fin de ligne:

Il affichera les fichiers qui ne sont pas ajoutés à la liste de validation et qui ont été modifiés (après avoir ignoré les différences de fin de ligne). Vous pouvez append l’argument “add” pour append ces fichiers à votre commit.

 #!/usr/bin/perl # Usage: ./gitdiff.pl [add] # add : add modified files to git use warnings; use ssortingct; my ($auto_add) = @ARGV; if(!defined $auto_add) { $auto_add = ""; } my @mods = `git status --porcelain 2>/dev/null | grep '^ M ' | cut -c4-`; chomp(@mods); for my $mod (@mods) { my $diff = `git diff -b $mod 2>/dev/null`; if($diff) { print $mod."\n"; if($auto_add eq "add") { `git add $mod 2>/dev/null`; } } } 

Code source: https://github.com/lepe/scripts/blob/master/gitdiff.pl

Mises à jour :

  • correction par evandro777: lorsque le fichier contient de l’espace dans le nom du fichier ou dans le répertoire