132 votes

Comment puis-je forcer git à extraire la branche master et à supprimer les retours chariot après avoir normalisé les fichiers en utilisant l'attribut "text" ?

Ok, donc j'ai ajouté le fichier .gitattributes avec des lignes comme celles-ci

*.css text
*.js text
etc...

J'ai ensuite suivi les instructions à http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in

$ rm .git/index     # Remove the index to force Git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"

Mais maintenant ma copie de travail a toujours les retours de chariot ! J'ai des fichiers non suivis que je voudrais conserver. Comment faire pour que git checkout la branche master à nouveau avec les fichiers normalisés ?

Je sais que les fichiers sont normalisés dans le référentiel car lorsque je clone le référentiel, j'ai tous les fichiers sans les retours chariot.

324voto

Jason Points 1435

Ahah ! Vérifiez le commit précédent, puis vérifiez le master.

git checkout HEAD^
git checkout -f master

21voto

mechsin Points 583

Comme d'autres l'ont souligné, il est possible de supprimer tous les fichiers du dépôt et de les vérifier ensuite. Je préfère cette méthode et cela peut être fait avec le code ci-dessous

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

ou une ligne

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

Je l'utilise tout le temps et je n'ai pas encore trouvé d'inconvénients !

Pour plus d'explications, le -z ajoute un caractère nul à la fin de chaque entrée produite par ls-files et le -0 dit à xargs pour délimiter la sortie qu'il recevait par ces caractères nuls.

1voto

ani17 Points 11
Stockez (sauvegardez) vos modifications

git stash

Prenez les changements mis à jour jusqu'au dernier commit de la branche courante (pour commencer proprement sans fichiers non suivis/modifiés juste au cas où).

git checkout .

Maintenant, passez à la branche master

git checkout master

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