Git status ignorer les fins de ligne / les fichiers identiques / windows & environnement linux / dropbox / pmdel
Comment puis-je faire
git status
ignorer les caractères de fin de ligne différences?
Info de base:
- Je utiliser de façon aléatoire Windows et Linux pour travailler sur le projet. Le projet est dans Dropbox.
J'ai trouvé beaucoup de choses sur comment faire git diff ignorer les fins de ligne. Depuis que j'utilise fondre git diff ouvre fondre pour chaque fichier. Et fusionner dit "à l'identique du fichier".
Alors, comment puis-je éviter cela. Git ne doit ouvrir fondre pour les fichiers modifiés.
Et git status ne doit pas déclarer les fichiers modifiés uniquement si le fichier se terminant est différent.
EDIT: Cause:
Cela est arrivé à cause de ce paramètre sur Windows
de base.autocrlf vrai
Donc j'ai vérifié la copie de travail sur Linux et l'ensemble de base.autocrlf faux sur Windows.
Il serait toujours bon de savoir comment faire git status ignorer les différents nouvelles lignes de.
- Si vous partagez le fichier à l'aide de dropbox sur différentes plates-formes, vous allez avoir ceci se produire, sauf si vous explicitement indiquer à git pour traiter tous les fichiers en binaire. La bonne solution est ne pas utiliser dropbox pour les dépôts git
- rappelez-vous: stackoverflow.com/questions/2825428/... - cela peut aider un peu
- J'ai trouvé comment il fonctionne nice avec Dropbox : par réglage de base.autocrlf faux
- Autant que je sache dire à git pour traiter les fichiers en binaire a aussi le côté pour effet de changer la façon dont il diffs le fichier. La bonne solution est d'indiquer à git d'ignorer les fins de ligne. 2 de mes choses préférées: faire face aux problèmes de fin de ligne inutile et désagréable FUD sur la façon dont les gens mettent leur repos jusqu' 🙂
- Wow, il m'a fallu un certain temps que ce problème
core.autocrlf
est la cause de racine sur Windows, mais également une cure sur Linux. Le problème est,autocrlf
est mondial sur Windows, et l'opération n'a pas ce paramètre dans.git/config
. Par l'exécution d'un localgit config core.autocrlf true
je me suis débarrassé de fausses changements sur mon NTFS copie de travail cloné sur Windows, mais accessibles sur Linux. (maintenant il y a seulement les parasites des changements avec des liens symboliques - NTFS liens symboliques de FAIRE un TRAVAIL sur fuseblk montages, mais Git voit que modifiée...)
Vous devez vous connecter pour publier un commentaire.
Essayez le réglage de base.autocrlf valeur comme ceci :
core.eol=lf
sorte que les deux côtés de la conversion àlf
et de ne pas les valeurs par défautnative
?core.autocrlf true
est un travail de réglage dans CygWin.core.safecrlf false
est un paramètre dans git bash ou mingwUtilisation .gitattributes au lieu de cela, avec le paramètre suivant:
.gitattributes devrait se trouver dans le même répertoire que votre global .gitconfig. Si .gitattributes n'existe pas, l'ajouter à ce répertoire. Après l'ajout ou le changement .gitattributes, vous aurez à faire un hard reset du dépôt afin d'appliquer avec succès les changements à des fichiers existants.
git status
. Il change la façon dont les fichiers sont enregistrés dans le référentiel. ref: git-scm.com/docs/gitattributes#_code_text_codeQuestion liés aux commandes git sur Windows système d'exploitation:
avertissement: LF sera remplacé par un CRLF dans ...
Le fichier aura l'origine des fins de ligne dans votre répertoire de travail.
Résolution:
Pas les messages d'avertissement venir.
Cette réponse semble pertinent puisque l'OP fait référence à un besoin pour un multi-OS solution. Cette Github article d'aide détails approches disponibles pour la manutention des lignes de terminaisons de la croix-OS. Il existe global et par-repo approches de la gestion de la croix-os fins de ligne.
Approche globale
Configurer Git fins de ligne de manutention sur Linux ou OS X:
Configurer Git fins de ligne de manutention sur Windows:
Par-repo approche:
Dans la racine de votre pension, de créer un
.gitattributes
de fichiers et de définir les caractères de fin de ligne des paramètres pour les fichiers de votre projet, une ligne à la fois dans le format suivant:path_regex line-ending-settings
oùline-ending-settings
est l'une des opérations suivantes:La
text
valeur peut être configuré en outre pour instruire Git sur la façon de gérer les fins de ligne pour l'appariement des fichiers:text
- Modifications des fins de ligne à l'OS natif des fins de ligne.text eol=crlf
- Convertit les fins de ligne àCRLF
à la caisse.text eol=lf
- Convertit les fins de ligne àLF
à la caisse.text=auto
- Valeur par défaut raisonnable que les feuilles de la ligne de gérer jusqu'à Git de discrétion.Voici le contenu d'un échantillon .gitattributes fichier:
Plus sur la façon d'actualiser votre repo après un changement de fin de ligne, les paramètres de ici. Tldr:
Dans certains cas, c'est tout ce qui doit être fait. D'autres peuvent avoir besoin de compléter les étapes supplémentaires suivantes:
- Je utiliser à la fois windows et linux, mais la solution
core.autocrlf true
ne m'a pas aidé. J'ai même eu rien n'a changé aprèsgit checkout <filename>
.J'ai donc utiliser la solution de contournement pour remplacer
git status
-gitstatus.sh
Je viens de comparer
md5sum
d'un fichier et son frère au référentiel.Exemple de sortie:
J'ai créé un script pour ignorer les différences dans les fins de ligne:
Il affiche les fichiers qui ne sont pas ajoutés à la validation de la liste et ont été modifiés (après avoir ignoré les différences dans les fins de ligne). Vous pouvez ajouter l'argument "ajouter" pour ajouter les fichiers à votre validation.
Code Source:
https://github.com/lepe/scripts/blob/master/gitdiff.pl
Mises à jour:
git status --porcelain 2>/dev/null | grep '^ M ' | awk '{ print \$2 }'
; à ceci: my @mods =git status --porcelain 2>/dev/null | grep '^ M ' | cut -c4-
;