Cette réponse semble pertinente puisque l'OP fait référence à un besoin de solution multi-OS. Cet article d'aide Github détaille les approches disponibles pour gérer les fins de lignes entre les systèmes d'exploitation. Il existe des approches globales et per-repo pour gérer les fins de ligne cross-os.
Approche globale
Configurez la gestion des fins de ligne Git sous Linux ou OS X:
git config --global core.autocrlf input
Configurez la gestion des fins de ligne Git sous Windows:
git config --global core.autocrlf true
Approche par pension:
À la racine de votre .gitattributes
dépôt , créez un fichier et définissez les paramètres de fin de ligne pour vos fichiers de projet, une ligne à la fois au format suivant: path_regex line-ending-settings
où line-ending-settings
est l'un des éléments suivants:
- texte
- binaire (fichiers pour lesquels Git ne doit pas modifier les fins de ligne - car cela peut empêcher certains types d'images tels que les PNG de ne pas s'afficher dans un navigateur)
La text
valeur peut être configurée davantage pour indiquer à Git comment gérer les fins de ligne pour les fichiers correspondants:
text
- Modifie les fins de ligne en terminaisons de ligne natives du système d'exploitation.
text eol=crlf
- Convertit les fins de ligne à la CRLF
caisse.
text eol=lf
- Convertit les fins de ligne à la LF
caisse.
text=auto
- Par défaut sensible qui laisse la gestion de la ligne à la discrétion de Git.
Voici le contenu d'un exemple de fichier .gitattributes:
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
Plus d'informations sur la façon d'actualiser votre dépôt après avoir modifié les paramètres de fin de ligne ici . Tldr:
sauvegardez vos fichiers avec Git, supprimez tous les fichiers de votre référentiel (à l'exception du répertoire .git), puis restaurez tous les fichiers en même temps. Enregistrez vos fichiers actuels dans Git, afin qu'aucun de votre travail ne soit perdu.
git add . -u
git commit -m "Saving files before refreshing line endings"
Supprimez l'index et forcez Git à réanalyser le répertoire de travail.
rm .git/index
Réécrivez l'index Git pour récupérer toutes les nouvelles fins de ligne.
git reset
Afficher les fichiers normalisés réécrits.
Dans certains cas, c'est tout ce qui doit être fait. D'autres devront peut-être effectuer les étapes supplémentaires suivantes:
git status
Ajoutez à nouveau tous vos fichiers modifiés et préparez-les pour une validation. C'est votre chance d'inspecter quels fichiers, le cas échéant, n'ont pas été modifiés.
git add -u
Il est parfaitement sûr de voir ici un grand nombre de messages indiquant "avertissement: CRLF sera remplacé par LF dans le fichier."
Réécrivez le fichier .gitattributes.
git add .gitattributes
Validez les modifications dans votre référentiel.
git commit -m "Normalize all the line endings"