¿Cómo puedo eliminar "Cambios no configurados para la confirmación"? en git

Cuando hago 'git status', obtengo

% git status # Not currently on any branch. # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops # modified: Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops 

Pero después de hacer '% git checkout – Source / WebKit / win / WebKit.vcproj / WebKitApple.vsprops', veo get lo mismo:

 % git checkout -- Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops % git status # Not currently on any branch. # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops # modified: Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops # 

¿Cómo puedo eliminar esos "cambios no configurados para commit"?

Incluso he intentado con "git stash", y todavía me quedan algunos de esos cambios.

He hecho un 'git diff'. Y este es el resultado, no veo ^ M: Y he visto '.gitconfig', no tengo 'autoctrl

 % git diff diff --git a/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops b/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops index 2ea7a51..9643739 100644 --- a/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops +++ b/Source/WebKit/win/WebKit.vcproj/WebKitApple.vsprops @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioPropertySheet - ProjectType="Visual C++" - Version="8.00" - Name="WebKitApple" - > - <Tool - Name="VCLinkerTool" - AdditionalDependencies="CFNetwork$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib QTMovieWin$(WebKitConfigSuffix).lib WebKitSystemInterface$(WebKitConfigSuffix).lib" - DelayLoadDLLs="QTMovieWin$(WebKitConfigSuffix).dll" - /> +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioPropertySheet + ProjectType="Visual C++" + Version="8.00" + Name="WebKitApple" + > + <Tool + Name="VCLinkerTool" + AdditionalDependencies="CFNetwork$(LibraryConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CoreGraphics$(LibraryConfigSuffix).lib QTMovieWin$(WebKitConfigSuffix).lib WebKitSystemInterface$(WebKitConfigSuffix).lib" + DelayLoadDLLs="QTMovieWin$(WebKitConfigSuffix).dll" + /> </VisualStudioPropertySheet> \ No newline at end of file diff --git a/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops b/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops index 797b4cb..c95c87d 100644 --- a/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops +++ b/Source/WebKit/win/WebKit.vcproj/WebKitDirectX.vsprops @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioPropertySheet - ProjectType="Visual C++" - Version="8.00" - Name="WebKitDirectX" - > - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="&quot;$(DXSDK_DIR)\Include&quot;" - /> - <Tool - Name="VCLinkerTool" - AdditionalLibraryDirectories="$(DXSDK_DIR)\Lib\x86" - /> +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioPropertySheet + ProjectType="Visual C++" + Version="8.00" + Name="WebKitDirectX" + > + <Tool + Name="VCCLCompilerTool" + AdditionalIncludeDirectories="&quot;$(DXSDK_DIR)\Include&quot;" + /> + <Tool + Name="VCLinkerTool" + AdditionalLibraryDirectories="$(DXSDK_DIR)\Lib\x86" + /> </VisualStudioPropertySheet> \ No newline at end of file 

Parece que está utilizando la opción core.autocrlf . Lo que probablemente está sucediendo es que el file en el repository tiene terminaciones de línea CRLF, pero debido a que esta opción se está configurando, Git cree que el file debe tener terminaciones de línea LF en el repository. Cuando finalice la compra del file, obtendrá el file en su directory de trabajo con terminaciones de línea nativas de la plataforma (CRLF si está en Windows, LF en Unixes, etc.).

Como parte de la operación de git status , Git los está convirtiendo a LF. Si el file en la revisión HEAD se almacena en Git como si tuviera terminaciones CRLF, eso explicaría por qué Git todavía ve las dos versiones como diferentes, incluso después de verificar la revisión desde el índice.

La forma más directa de detectar esto es ejecutar git diff desde un terminal, que le mostrará el carácter CR como ^M

Para resolver esta situación, puede simplemente confirmar los files (con algunos posts como "estandarizar terminaciones de línea") o puede desactivar core.autocrlf completo, lo que significa que los files se almacenarán en el repository tal como están y el ajuste de final de línea no ser realizado por Git. (Esto puede tener consecuencias muy negativas si se desarrolla con otras personas que no usan la misma plataforma).

Solo quiero agregar a la respuesta de @cdhowie .

Experimenté el mismo problema que el OP.

La mejor manera de verificar las terminaciones de línea de Windows no es a través de vim sino a través de od :

 od -xcb foo.txt | tail 

Las terminaciones de línea de Windows deberían verse así:

 \r \n 

Para get fácilmente todos los files afectados y convertir a Unix (en mi caso) es hacer esto:

 git ls-files -m | xargs dos2unix dos2unix: converting file foo.txt to Unix format ... dos2unix: converting file moo.txt to Unix format ...