504 votes

Comment puis-je forcer git d’utiliser LF au lieu de CR + LF sous windows ?

Je veux de la force git checkout fichiers sous Windows à l'aide de seulement LF pas CR+LF. J'ai vérifié les deux options de configuration, mais je n'étais pas capable de trouver la bonne combinaison de paramètres.

Je veux convertir tous les fichiers LF et de garder l' LF sur les fichiers.

Remarque: j'ai utilisé autocrlf = input mais cela répare les fichiers lorsque vous les valider. Je veux le forcer à les obtenir à l'aide de LF.

Probablement que je n'étais pas si clair: le référentiel est déjà à l'aide de LF , mais les extraits des fichiers à l'aide de msysgit utilisez CR+LF et je veux de la force de msysgit de les obtenir avec LF: forcer les fins de ligne Unix.

>git config --list | grep crlf
core.autocrlf=input

611voto

Chronial Points 15402

La bonne façon d'obtenir LF terminaisons windows est d'abord de définir core.autocrlf de false:

git config --global core.autocrlf false

Vous avez besoin de faire cela si vous utilisez msysgit, parce qu'il la définit true de ses paramètres système.

Maintenant, git ne fera pas de fin de ligne de la normalisation. Si vous souhaitez que les fichiers de vous enregistrer afin d'être normalisée, ce faire: Set text=auto votre .gitattributes pour tous les fichiers:

* text=auto

Et ensemble core.eol de lf:

git config --global core.eol lf

Maintenant, vous pouvez aussi passer seul repos à crlf (dans le répertoire de travail!) en exécutant

git config core.eol crlf

Après vous avez terminé la configuration, vous pouvez git pour normaliser tous les fichiers dans le repo. Pour ce faire, allez à la racine de votre repo et exécutez ces commandes:

git rm --cached -rf .
git diff --cached --name-only -z | xargs -n 50 -0 git add -f

Maintenant, si vous voulez git pour normaliser les fichiers dans votre répertoire de travail, exécutez ces commandes:

git ls-files -z | xargs -0 rm
git checkout .

174voto

VonC Points 414372

L'OP a ajouté à sa question:

les extraits des fichiers à l'aide de msysgit utilisez CR+LF et je veux aller de l'msysgit de les obtenir avec LF

Une première étape simple serait encore en .gitattributes le fichier:

*.txt -crlf

pour éviter toute crlf conversion de fichiers avec un bon eol.

Voir les Meilleures pratiques pour la croix-plate-forme git config?


Mais une seconde plus puissante consiste à gitattribute pilote de filtre et ajouter une bavure de l'étape

filter driver

Chaque fois que vous mettez à jour votre arbre de travail, un script peut, uniquement pour les fichiers que vous avez spécifié dans l' .gitattributes, de la force de l' LF eol et toute autre option de mise en forme que vous souhaitez appliquer.
Si le "clear" script ne fait rien, vous aurez (après commit) qui se transforme vos fichiers, en appliquant exactement le format que vous avez besoin d'eux pour suivre.

29voto

kusma Points 3719

Core.autocrlf=Input est le bon réglage pour ce que vous voulez, mais vous pourriez avoir à faire un « git mise à jour-index--actualiser » ou un « git reset--dur » pour que la modification soit prise en compte.

Avec core.autocrlf la valeur d’entrée, git appliquera pas newline-conversion en départ (donc si vous avez des LF dans le repo, vous allez obtenir LF), mais il fera en sorte que, au cas où vous gâcher et introduire quelques CRLF dans la copie de travail en quelque sorte, ils ne font leur chemin dans le repo.

-1voto

Rufinus Points 8148

Je veux de la force git checkout fichiers sous Windows en utilisant simplement LF pas CR+LF.

ce n'est pas ce que vous voulez todo. Vous devriez résoudre les lineendings lors de la validation de sorte que le repo est propre.

Pour les fichiers texte c'est la bonne chose à faire: elle corrige les fins de ligne tels que nous avons LF fin de ligne, dans le référentiel http://git-scm.com/docs/git-config (enregistrer.crlf)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X