Ignorar ciertos cambios para cometer git

Los miembros de nuestro equipo usan versiones diferentes de Visual Studio, y VS parece actualizar automáticamente el file sln con un código como:

Microsoft Visual Studio Solution File, Format Version 11.00 # Visual C# Express 2010 

o

 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 

cada vez que trabajamos con la solución. ¿Podemos configurar git para ignorar dichos cambios? No estamos interesados ​​en esta línea, pero estamos interesados ​​en otros cambios del file .sln, por ejemplo, agregando nuevos csproj a la solución.

No es posible ignorar parcialmente un file. Una solución simple sería crear dos versiones del file .sln y decirle al equipo que abra el correspondiente a su versión.

Otra solución sería un enlace posterior a la confirmación que rechaza la confirmación si se cambian estas líneas. Necesita un poco de secuencias de commands, pero es factible.

En su lado local simplemente puede actualizar el índice git para ignorar los cambios en ciertos files como este:

 git update-index --assume-unchanged SolutionFile.sln 

Lo mismo puede hacer cualquiera de sus desarrolladores. Otra solución sería agregar el file a .gitignore si no desea mantenerlo bajo control de fuente.

Simplemente ignoraría los files .sln porque no son relevantes para la construcción de un proyecto: Microsoft se dio count hace algún time de que los files de proyecto deben ser versionables y novadays todos los edificios realizados por Studio se llevan a cabo mediante el motor msbuild que toma esos .proj (y otro .<whatever>proj , como .csproj , .csproj , etc.) files XML y los usa para build un proyecto. Esos files son en realidad todo lo que se necesita para build un proyecto, y el file de solución solo contiene varios datos de contabilidad.

Puede agregar un filter de borrado / borrado a git, que llama a un script para ajustar la línea en particular para que sea consistente al realizar el commit. En " ¿Puede git cambiar automáticamente entre espacios y tabs? ", Se muestra cómo implementar un cambio similar, donde los espacios se convierten en tabs en el process de pago y vuelven a los espacios en la confirmación.

Probablemente necesites escribir la secuencia de commands para identificar y modificar la línea relevante, mientras que el ejemplo vinculado usa commands de Unix preexistentes para el intercambio entre tabs y espacios.