GIT: no se puede ignorar el archivo .suo

84

Estoy tratando de trabajar usando Git con un colega, en una aplicación escrita en C #.

Hemos agregado la entrada "project1.suo" al archivo .gitignore, pero cada vez que uno de nosotros tiene que confirmar el proyecto, Git parece indicarnos que también confirmemos el archivo "project1.suo".

Hemos probado muchos métodos para agregar el archivo en .gitignore así:

*.suo
project1.suo
c:\project\project1.suo

No podemos solucionar este problema.

Laxedur
fuente
2
¿Se agrega el archivo .gitignore al repositorio?
Steve B
sí está en el repositorio
Laxedur
3
Supongo que el archivo se ha agregado una vez, intente un git rm en este archivo explícitamente, confirme y vea si todavía se sugiere como archivo agregado.
Steve B
¿Puede decirme cómo puedo usar el comando rm, porque lo intenté pero el comando no puede encontrar el archivo ...
Laxedur
@SteveB .gitignore no tiene que ser agregado al repositorio para estar en vigencia.
Ikke

Respuestas:

165

git no ignora los archivos que se han agregado al repositorio. Si desea que se ignore, debe eliminar el archivo del repositorio:

git rm --cached project1.suo
git commit -m "Delete suo file from repository"

Esto eliminará el archivo del repositorio, mientras aún está en su disco duro.

Ikke
fuente
si gestiona los archivos * .suo, ciertamente no los enviará de forma remota. ¿Causará el problema a la persona que clone este proyecto?
Waqas
Si está usando el cliente de Visual Studio, no hay forma de hacerlo desde allí, debe usar el shell cmd. Pero si usara el comando rm desde el shell, vería el archivo .suo tachado, pero si cometiera el cambio a través de la interfaz de usuario de VS, reaparecería. Tienes que ejecutar los dos comandos anteriores a través de la línea de comandos.
Michael Blackburn
1
@Waqas no, Visual Studio simplemente creará un nuevo archivo para ellos. Aquí es cuando el .gitignore excluye * .suo como parte del repositorio es importante. Cuando se comprometen, el .gitignore que verificaron les impedirá (o al menos los disuadirá) de verificar su propio archivo SUO.
Michael Blackburn
3
Esto puede no ser obvio para algunas personas nuevas. Esto funcionó a las mil maravillas. Para ejecutar este comando, debe estar dentro de la carpeta donde se encuentra el .suo. El primer comando que debe ejecutar en cmd.exe es cambiar el directorio "CD <escriba la ruta completa a la carpeta raíz de .suo> luego presione enter .. De forma predeterminada, es posible que no vea la carpeta .vs donde está .suo, así que asegúrese de mostrar Los archivos ocultos están habilitados en la raíz de la carpeta del repositorio. Mi archivo no tenía un nombre de proyecto. Solo la extensión. git rm --cached .suo git commit -m "Eliminar archivo suo del repositorio"
moto_geek
si necesita ignorar la carpeta, y ya está en el repositorio remoto. use la opción -r en el comando, git rm -r --cached <ruta a la carpeta>
Somnath Kadam
3

Siempre vuelvo a esta pregunta para usar el método en la respuesta, pero encontré una mejor solución que es ignorar los cambios en este archivo. El método es

git update-index --assume-unchanged project1.suo

o

git update-index --assume-unchanged .vs/config/applicationhost.config

Para deshacer este uso, no-asume-sin cambios

Tareq
fuente
Recibo un mensaje "fatal: No se puede Web archivo de marca <directorio> / <filetoexclude>"
dancerjude
Tenga en cuenta que esto dará lugar a problemas cuando alguien actualice el archivo. Git intentará actualizar el archivo, pero nota que ha cambiado y le dará un mensaje de error. En cualquier caso, --skip-worktreees mejor que --assume-unchanged, que solo debe usarse por razones de rendimiento.
Ikke
-4

Yo tuve el mismo problema. La solución de Ikke ayuda, pero no olvide eliminar la entrada * .suo de su .gitignore, si está allí. Una vez corregido el archivo,

git add **/*.suo
Tsvetelina Tsvetanska
fuente
1
El .suo NO debe eliminarse de .gitignore para cumplir con los requisitos del OP.
Caltor