Agregué .DS_Store al archivo .gitignore, pero parece que solo ignora .DS_Store en el directorio raíz, no en todas las carpetas y subcarpetas.
¿Cómo puedo solucionar esto?
Agregué .DS_Store al archivo .gitignore, pero parece que solo ignora .DS_Store en el directorio raíz, no en todas las carpetas y subcarpetas.
¿Cómo puedo solucionar esto?
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 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 .gitignore
archivo: .DS_Store
. ¡No olvides el período!
git rm --cached .DS_Store
elimina solo .DS_Store
del directorio actual. Puedes usar
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
para 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 ejemplo
echo .DS_Store >> ~/.gitignore_global
Ahora dile a git que lo use para todos los repositorios:
git config --global core.excludesfile ~/.gitignore_global
Esta página me ayudó a responder tu pregunta.
Agregar **/.DS_Store
en .gitignore
el subdirectorio
Si .DS_Store
ya está comprometido:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Para ignorarlos en todo el repositorio: (a veces se llama ._.DS_Store
)
echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git rm --cached your_file
primero
find . -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
.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.
Pero, si ya está allí, escriba en su terminal:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
luego confirme y presione los cambios para eliminar .DS_Store de su repositorio remoto:
git commit -m "Remove .DS_Store from everywhere"
git push origin master
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 ...)
*
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
Su archivo .gitignore debería verse así:
# Ignore Mac DS_Store files
.DS_Store
Siempre que no incluya una barra inclinada, se compara con el nombre del archivo en todos los directorios. (desde aquí )
git rm --cached path/to/file/here
Paso 1, borra todos los *.DS_store
archivos. Uno puede correr
git rm -f *.DS_Store
¡pero ten en cuenta que rm -f
puede ser un poco peligroso si tienes un error tipográfico! Paso dos: agregue
*.DS_Store
.DS_Store
a .gitignore. ¡Esto funcionó para mí!
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!
$ git rm ./*.DS_Store
- eliminar todo .DS_Store de git$ echo \.DS_Store >> .gitignore
- ignorar .DS_Store en el futurocomprometerse y empujar