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_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
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
para eliminar todo .DS_Storesdel repositorio.
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:
git config --global core.excludesfile ~/.gitignore_global
Esta página me ayudó a responder tu pregunta.
Agregar **/.DS_Storeen .gitignoreel subdirectorio
Si .DS_Storeya 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_fileprimero
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch, de: stackoverflow.com/questions/18393498/…
-fes 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_storearchivos. Uno puede correr
git rm -f *.DS_Store
¡pero ten en cuenta que rm -fpuede 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 --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!
$ git rm ./*.DS_Store - eliminar todo .DS_Store de git$ echo \.DS_Store >> .gitignore - ignorar .DS_Store en el futurocomprometerse y empujar