web-dev-qa-db-fra.com

Quelle est la signification de ^ M dans git diff

Je diffère un fichier entre les dépôts BitBucket fourchus et en amont:

$ git diff Origin/branchA..upstream/branchB -- some/file/path.xyz

Il semble renvoyer la même différence pour presque tous les fichiers:

-<U+FEFF>@using Sitecore.Mvc
+@using Sitecore.Mvc^M

Quelle est la signification exacte de ^M qui n'apparaît qu'après la première ligne? Je vois ce problème lorsque je compare également d'autres fichiers. Je suis sur une machine Windows Server 2008 R2. core.autocrlf est défini sur true. Le .gitattributes est défini sur text eol=lf. Ma version git est 2.5.1.windows.1.

20
Dennis Subachev

^M représente retour chariot . Ce diff signifie que quelque chose a supprimé un nomenclature Unicode du début de la ligne et ajouté un CR à la fin.

Le ^ le symbole signifie Contrôle, donc ^M veux dire Ctrl+M.

Pour passer de cela au code de caractère ASCII, prenez le caractère de base et retournez le bit 6 (ie XOR avec 64). Pour les lettres, cela signifie soustraire 64. Ainsi, par exemple ^A est le code de caractère 1 (car A est 65). ^M est 77 - 64 = 13 (car M est 77), ce qui correspond au retour chariot en ASCII.

17
melpomene