¿Cómo puedo eliminar archivos .DS_Store de un repositorio Git?
Pregunta
¿Cómo puedo eliminar esos molestos Mac OS X? .DS_Store
archivos de un repositorio Git?
Solución
Eliminar archivos existentes del repositorio:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Añade la línea
.DS_Store
al archivo .gitignore
, que se puede encontrar en el nivel superior de su repositorio (o crearse si aún no está allí).Puedes hacer esto fácilmente con este comando en el directorio superior
echo .DS_Store >> .gitignore
Entonces
git add .gitignore
git commit -m '.DS_Store banished!'
Otros consejos
Combinando las respuestas de benzado y webmat, actualizando con git rm
, sin fallar en los archivos encontrados que no están en el repositorio y haciéndolos pegables genéricamente para cualquier usuario:
# remove any existing files from the repo, skipping over ones not in repo
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
# specify a global exclusion list
git config --global core.excludesfile ~/.gitignore
# adding .DS_Store to that list
echo .DS_Store >> ~/.gitignore
La mejor solución para abordar este problema es ignorar globalmente estos archivos de todos los repositorios de git de su sistema.Esto se puede hacer creando un archivo gitignore global como:
vi ~/.gitignore_global
Agregar reglas para ignorar archivos como:
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Ahora, agrega este archivo a tu configuración global de git:
git config --global core.excludesfile ~/.gitignore_global
Editar:
Se eliminaron los íconos, ya que es posible que deban confirmarse como activos de la aplicación.
En algunas situaciones, es posible que también desee ignorar algunos archivos globalmente.Para mí, .DS_Store es uno de ellos.Así es cómo:
git config --global core.excludesfile /Users/mat/.gitignore
(O cualquier archivo de su elección)
Luego edite el archivo como si fuera .gitignore de un repositorio.Tenga en cuenta que creo que debe utilizar una ruta absoluta.
Si no puede eliminar los archivos porque tienen cambios por etapas, utilice:
git rm --cached -f *.DS_Store
Tuve que cambiar git-rm a git rm en lo anterior para que funcionara:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
Abra la terminal y escriba "cd <ProjectPath>"
Eliminar archivos existentes:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Agrega esto
.DS_Store
escribe "ctrl+x"
Escribe "y"
Ingrese para guardar el archivo
git add .gitignore
git commit -m '.DS_Store removed.'
La respuesta más votada es increíble, pero para ayudar a los novatos como yo, aquí se explica cómo crear el archivo .gitignore, editarlo, guardarlo, eliminar los archivos que ya haya agregado a git y luego enviar el archivo a Github.
Crea el archivo .gitignore
Para crear un archivo .gitignore, simplemente puede touch
el archivo que crea un archivo en blanco con el nombre especificado.Queremos crear el archivo llamado .gitignore para poder usar el comando:
touch .gitignore
ignorar los archivos
Ahora tienes que agregar la línea que le dice a git que ignore los archivos de DS Store a tu .gitignore.Puedes usar el editor nano para hacer esto.
nano .gitignore
Nano es bueno porque incluye instrucciones sobre cómo salir de él.(Control-oh ahorrar, Control-X salir)
Copie y pegue algunas de las ideas de este esencia de github que enumera algunos archivos comunes que se deben ignorar.Los más importantes, para responder a esta pregunta, serían:
# OS generated files #
######################
.DS_Store
.DS_Store?
Los # son comentarios y le ayudarán a organizar su archivo a medida que crece.
Este Artículo de Github También tiene algunas ideas y pautas generales.
Eliminar los archivos ya agregados a git
Finalmente, debe eliminar esos archivos de DS Store de su directorio.
Utilice este gran comando de la respuesta más votada.Esto revisará todas las carpetas de su directorio y eliminará esos archivos de git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Sube .gitignore a Github
Último paso, debes confirmar tu archivo .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
borrarlos usando git-rm
, y luego agregue .DS_Store a .gitignore
para evitar que se agreguen nuevamente.También puedes usar cosecha azul para evitar que se creen todos juntos
Utilice este comando para eliminar los archivos existentes:
find . -name '*.DS_Store' -type f -delete
Luego añade .DS_Store
a .gitignore
Lo siguiente funcionó mejor para mí.Manejé archivos inigualables y archivos con modificaciones locales.Como referencia, esto fue en un sistema Mac 10.7 con git 1.7.4.4.
Buscar y eliminar:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
También ignoro globalmente .DS_Store en todos los repositorios configurando un core.excludesfile global.
Primero, cree el archivo (si aún no existe):
touch ~/.gitignore
Luego agregue la siguiente línea y guarde:
.DS_Store
Ahora configura git para respetar el archivo globalmente:
git config --global core.excludesfile ~/.gitignore
En caso de que desee eliminar archivos DS_Store de cada carpeta y subcarpeta:
En caso de DS_Store ya comprometido:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Ignóralos al:
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
Encontré que la siguiente línea de cortapelos hace mejor en limpiar todo .DS_Store
, incluido uno que tiene modificaciones locales.
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
--cached
opción, mantiene su local .DS_Store
ya que se reproducirá de todos modos.
Y tal como se mencionó anteriormente, agregue .DS_Store
al archivo .gitignore en la raíz de su proyecto.Entonces ya no estará a tu vista (de repos).
Llegué un poco tarde a la fiesta, pero tengo una buena respuesta.Para eliminar los archivos .DS_Store, use los siguientes comandos desde una ventana de terminal, pero tenga mucho cuidado al eliminar archivos con 'buscar'.Usar un nombre específico con la opción -name es una de las formas más seguras de usarlo:
cd directory/above/affected/workareas
find . -name .DS_Store -delete
Puede omitir "-delete" si simplemente desea enumerarlos antes y después.Eso te asegurará que se han ido.
Con respecto al consejo ~/.gitignore_global:ten cuidado aquí.Desea colocar ese buen archivo en .Gitignore dentro del nivel superior de cada trabajo de trabajo y cometerlo, de modo que cualquiera que clene su repositorio obtenga el beneficio de su uso.
Esto funcionará:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
Elimina todos los archivos cuyos nombres terminan en .DS_Store
, incluido ._.DS_Store
.
Por alguna razón, nada de lo anterior funcionó en mi Mac.
Mi solución es desde la ejecución del terminal:
rm .DS_Store
Luego ejecute el siguiente comando:
git pull origin master
Al inicializar su repositorio, omita el comando git que contiene
-u
y no debería ser un problema.
Esto funcionó para mí, combinación de dos respuestas anteriores:
- $ git rm --cached -f *.DS_Store
- $ Git Commit -m "Filter-Branch --index-filter 'git rm --cached --ignore-unmatch .ds_store"
- $ git push origen maestro --force
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
Existen algunas soluciones para resolver este problema.Para evitar la creación de archivos .DS_Store, no utilice OS X Finder para ver carpetas.Una forma alternativa de ver carpetas es utilizar la línea de comandos de UNIX.Para eliminar los archivos .DS_Store se puede utilizar un producto de terceros llamado DS_Store Terminator.Para eliminar los archivos .DS_Store de todo el sistema, se puede utilizar un comando de shell UNIX.Terminal de lanzamiento desde aplicaciones: Utilidades en el indicador de shell Unix Ingrese el siguiente comando UNIX:sudo buscar / -name ".DS_Store" -profundidad -exec rm {} \;Cuando se le solicite una contraseña, ingrese la contraseña de administrador de Mac OS X.
Este comando busca y elimina todas las apariciones de .DS_Store comenzando desde la raíz (/) del sistema de archivos en toda la máquina.Para configurar este comando para que se ejecute como una tarea programada, siga los pasos a continuación:Terminal de lanzamiento desde aplicaciones: Utilidades en el indicador de shell Unix Ingrese el siguiente comando UNIX:
sudo crontab -e cuando se le solicita una contraseña, ingrese la contraseña de administrador de Mac OS X.Una vez en el editor vi, presione la letra I en su teclado una vez e ingrese lo siguiente:
15 1 * * * raíz buscar / -nombre ".DS_Store" -profundidad -exec rm {} \;
Esto se llama entrada crontab y tiene el siguiente formato:
Minuto Hora Día Del Mes Mes Día De La Semana Comando de usuario.
La entrada crontab significa que el sistema ejecutará el comando automáticamente a la 1:15 a. m. todos los días mediante la cuenta llamada root.
El comando comienza desde buscar hasta .Si el sistema no se está ejecutando, este comando no se ejecutará.
Para guardar la entrada, presione la tecla Esc una vez y luego presione simultáneamente Shift + z+ z.
Nota:La información del paso 4 es sólo para el editor vi.
agrega esto a tu archivo .gitignore
#Ignore folder mac
.DS_Store
guarda esto y haz el compromiso
git add -A
git commit -m "ignore .DS_Store"
y ahora ignoras esto en todas tus confirmaciones
Eliminar archivos ignorados:
(.DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
No es necesario eliminar .DS_STORE
en la zona
Solo agrégalo a .gitignore
archivo
El archivo .gitignore es solo un archivo de texto que le dice a Git qué archivos o carpetas ignorar en un proyecto.
Comandos
nano .gitignore
- Escribir
.DS_Store
Luego haga clicCTRL+X > y > Hit Return
git status
Para echar un último vistazo a tus cambios.git add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master