¿Cómo exactamente lo agregaste a .gitignore? Debería funcionar en todos los directorios (lo hace para mí).
Thilo
A mí también me funciona. También intenté cuando está al final del archivo, si tienes que tener una nueva línea (específica de la plataforma) pero eso no cambió que los directorios .DS_Store dentro de cualquier parte de la jerarquía todavía se ignoraron.
enorl76
La pregunta, según tengo entendido, fue: cómo ignorar fácilmente todas las apariciones de .DS_Store en todos los subdirectorios sin hacerlo manualmente en cada subdirectorio. Yo tuve el mismo problema. La respuesta a continuación muestra cómo resolverlo (los últimos 2 párrafos).
petrsyn
Respuestas:
648
Creo que el problema que tienes es que en alguna confirmación anterior, accidentalmente agregaste .DS_Storearchivos al repositorio. Por supuesto, una vez que se rastrea un archivo en su repositorio, se seguirá rastreando incluso si coincide con una entrada en un archivo .gitignore aplicable.
Debe eliminar manualmente los .DS_Storearchivos que se agregaron a su repositorio. Puedes usar
git rm --cached .DS_Store
Una vez eliminado, git debería ignorarlo. Sólo es necesario la línea siguiente en la raíz de su .gitignorearchivo: .DS_Store. ¡No olvides el período!
git rm --cached .DS_Store
elimina solo .DS_Storedel directorio actual. Puedes usar
Consejo de fieltro: dado que probablemente nunca quieras incluir .DS_Storearchivos, crea una regla global. Primero, haga un .gitignorearchivo global en alguna parte, por ejemplo
echo .DS_Store >> ~/.gitignore_global
Ahora dile a git que lo use para todos los repositorios:
Los últimos 2 párrafos responden esta pregunta. Gracias.
petrsyn
70
´´git rm --cached .DS_Store´´ elimina solo un .DS_Store del directorio actual. Use ´´find. -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch´´ para eliminar todos los .DS_Stores del repositorio
auco
44
Una lista de otros archivos comunes para ignorar podría ser útil
geotheory
14
Mala idea de usar la regla global IMO: Intentar mantener configuraciones globales en múltiples usuarios / máquinas nunca funciona; desea que las reglas que rigen su repositorio en el repositorio mismo. De acuerdo con esto
Yarin
15
No estoy de acuerdo contigo (Aunque he votado tu comentario porque creo que es perspicaz). Si lo hacemos de manera global, entonces todos los usuarios de Mac deben hacerlo, pero solo una vez. Si hacemos un amplio repositorio, entonces debemos hacerlo para cada repositorio. No sé sobre ti, pero hago nuevos repositorios todo el tiempo. Al hacerlo globalmente, uno resuelve el problema de una vez por todas.
Parece que -fes necesario agregar si tiene archivos abiertos en las carpetas correspondientes:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Mehmet Kaplan
158
Si nunca se agregó .DS_Store a su repositorio git, simplemente agréguelo a su archivo .gitignore.
Si no tiene uno, cree un archivo llamado
.gitignore
En el directorio raíz de su aplicación y simplemente escriba
**/.DS_Store
En eso. Esto nunca permitirá que el archivo .DS_Store se filtre en tu git.
Y ahora agregue .DS_Store a su archivo .gitignore, y luego vuelva a confirmar y presione con las 2 últimas piezas de código (git commit ..., git push ...)
@MilanG es una palabra clave que básicamente significa 'buscar en este directorio y en todos los subdirectorios'.
lachie_h 05 de
1
No estoy seguro de que sea una explicación perfecta de lo que significa el doble asterisco. Es un comodín. Podría *o **dependiendo de lo que quiera lograr. Es una forma de decirle al shell cómo navegar por los directorios. Esta respuesta de stackoverflow lo explica completamente stackoverflow.com/a/28199633/4092170
También puede agregar el --cachedindicador a la respuesta de auco para mantener archivos locales .DS_store, como lo mencionó Edward Newell en su respuesta original. El comando modificado se ve así: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch.. ¡Gracias y gracias!
Respuestas:
Creo que el problema que tienes es que en alguna confirmación anterior, accidentalmente agregaste
.DS_Store
archivos al repositorio. Por supuesto, una vez que se rastrea un archivo en su repositorio, se seguirá rastreando incluso si coincide con una entrada en un archivo .gitignore aplicable.Debe eliminar manualmente los
.DS_Store
archivos que se agregaron a su repositorio. Puedes usarUna vez eliminado, git debería ignorarlo. Sólo es necesario la línea siguiente en la raíz de su
.gitignore
archivo:.DS_Store
. ¡No olvides el período!elimina solo
.DS_Store
del directorio actual. Puedes usarpara eliminar todo
.DS_Stores
del repositorio.Consejo de fieltro: dado que probablemente nunca quieras incluir
.DS_Store
archivos, crea una regla global. Primero, haga un.gitignore
archivo global en alguna parte, por ejemploAhora dile a git que lo use para todos los repositorios:
Esta página me ayudó a responder tu pregunta.
fuente
Agregar
**/.DS_Store
en.gitignore
el subdirectorioSi
.DS_Store
ya está comprometido:Para ignorarlos en todo el repositorio: (a veces se llama
._.DS_Store
)fuente
git rm --cached your_file
primerofind . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
, de: stackoverflow.com/questions/18393498/…-f
es necesario agregar si tiene archivos abiertos en las carpetas correspondientes:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Si nunca se agregó .DS_Store a su repositorio git, simplemente agréguelo a su archivo .gitignore.
Si no tiene uno, cree un archivo llamado
En el directorio raíz de su aplicación y simplemente escriba
En eso. Esto nunca permitirá que el archivo .DS_Store se filtre en tu git.
Pero, si ya está allí, escriba en su terminal:
luego confirme y presione los cambios para eliminar .DS_Store de su repositorio remoto:
Y ahora agregue .DS_Store a su archivo .gitignore, y luego vuelva a confirmar y presione con las 2 últimas piezas de código (git commit ..., git push ...)
fuente
*
o**
dependiendo de lo que quiera lograr. Es una forma de decirle al shell cómo navegar por los directorios. Esta respuesta de stackoverflow lo explica completamente stackoverflow.com/a/28199633/4092170Su archivo .gitignore debería verse así:
Siempre que no incluya una barra inclinada, se compara con el nombre del archivo en todos los directorios. (desde aquí )
fuente
git rm --cached path/to/file/here
Paso 1, borra todos los
*.DS_store
archivos. Uno puede correr¡pero ten en cuenta que
rm -f
puede ser un poco peligroso si tienes un error tipográfico! Paso dos: agreguea .gitignore. ¡Esto funcionó para mí!
fuente
Añadir
*.DS_Store
a su archivo .gitignore. Eso me funciona perfectamentefuente
También puede agregar el
--cached
indicador a la respuesta de auco para mantener archivos locales .DS_store, como lo mencionó Edward Newell en su respuesta original. El comando modificado se ve así:find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
.. ¡Gracias y gracias!fuente
Paso: 1) Eliminar los archivos existentes con este comando
encontrar . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Paso: 2) Agregue .DS_Store en su archivo .gitignore
Paso: 3) Confirma tus cambios en .gitignore git add .gitignore git commit -m "eliminado .DS_Store"
fuente
$ git rm ./*.DS_Store
- eliminar todo .DS_Store de git$ echo \.DS_Store >> .gitignore
- ignorar .DS_Store en el futurocomprometerse y empujar
fuente