J'essaie de faire en sorte que git ne modifie aucune fin de ligne pour aucune opération. Malheureusement, il semble que ce soit le cas, peu importe quoi. Je l'ai réduit au cas de test suivant, qui a autant de mécanismes différents pour désactiver ce comportement que je pouvais trouver.
- Commencez par deux machines (ordinateur Windows = A, ordinateur Linux = B)
- Sur les deux machines:
git config --global core.autocrlf false - Sur les deux machines:
git config --global core.eol crlf(juste au cas où)
- Créez un nouveau référentiel sur A. À partir d'un dossier vide:
git init --shared(puis affichez le.gitrépertoire créé )- Créer un nouveau fichier
.gitignoredans le référentiel - Créez un nouveau fichier
.gitattributesdans le référentiel avec une seule ligne:* -text git add ., puisgit commit -m "initial commit"pour contourner, par exemple ceci .git branch master_recv- Ajouter des télécommandes
- Créer un nouveau fichier
document.txtdans le référentiel contenant CRLF - Commit:,
git add -Aalorsgit commit -m "<something>" - Notez que A
document.txtcontient toujours CRLF (et le supprimer et réinitialiser avec--hardrenvoie la version toujours avec CRLF)
- SCP tout le répertoire sur l'ordinateur B
- Ajouter un nouveau fichier
new filecontenant CRLF - Commit:,
git add -Aalorsgit commit -m "<something>" - Notez que les B
document.txtet les Bnew filecontiennent toujours CRLF
- Tirez le maître de B vers A:
git pull <remote> master:master_recv - A
document.txtest devenu LF. Le fichier ajouténew filecontient également LF.
Le problème ne se produit pas si B est une machine Windows.


core.autocrlftoujours été faux? On dirait que vous avez déjà des\nfins de ligne dans votre référentiel? Il n'y a aucun paramètre à modifier\ndans votre référentiel\r\ndans votre répertoire de travail.