¿Cómo puedo eliminar esos molestos .DS_Store
archivos de Mac OS X de un repositorio de Git?
¿Cómo puedo eliminar esos molestos .DS_Store
archivos de Mac OS X de un repositorio de Git?
Respuestas:
Eliminar archivos existentes del repositorio:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Agrega la línea
.DS_Store
al archivo .gitignore
, que se puede encontrar en el nivel superior de su repositorio (o creado si aún no está allí). Puede hacerlo fácilmente con este comando en el directorio superior
echo .DS_Store >> .gitignore
Entonces
git add .gitignore
git commit -m '.DS_Store banished!'
-exec
se iniciará git-rm
una vez para cada archivo .DS_Store, mientras xargs
que colocará todas las rutas en una línea de comando. Principalmente prefiero xargs
porque no tengo que preocuparme por escapar de muchos personajes especiales.
.DS_Store
al .gitignore
trabajo de forma recursiva? Es decir, ¿lo ignorará some/level/of/folders/.DS_Store
también?
Combinando las respuestas de benzado y webmat, actualizando git rm
, sin fallar en los archivos encontrados que no están en el repositorio, y haciéndolo pegar 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
~/.gitignore
como mi archivo de exclusión global es un fastidio. Hay archivos que quiero excluir de mi directorio de inicio que no quiero ignorar a nivel mundial. En su ~/.gitexcludes
lugar, uso la misma directiva:core.excludesfile
La mejor solución para abordar este problema es ignorar globalmente estos archivos de todos los repositorios git en su sistema. Esto se puede hacer creando un archivo global de gitignore 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, agregue este archivo a su configuración global de git:
git config --global core.excludesfile ~/.gitignore_global
Editar:
Se eliminaron los iconos, ya que podrían necesitar ser confirmados como activos de aplicación.
En algunas situaciones, es posible que también desee ignorar algunos archivos a nivel mundial. 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 un repositorio .gitignore. Tenga en cuenta que creo que debe usar una ruta absoluta.
Si no puede eliminar los archivos porque tienen cambios de uso por etapas:
git rm --cached -f *.DS_Store
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
escriba "ctrl + x"
Escriba "y"
Ingrese para guardar el archivo
git add .gitignore
git commit -m '.DS_Store removed.'
nano .gitignore
crea el archivo si no está presente, este comando debe ejecutarse desde la carpeta raíz del proyecto
La respuesta más votada es increíble, pero ayudando a los novatos como yo, aquí se explica cómo crear el archivo .gitignore, editarlo, guardarlo, eliminar los archivos que quizás ya haya agregado a git y luego subir el archivo a Github.
Crea el archivo .gitignore
Para crear un archivo .gitignore, solo puede crear touch
el archivo que crea un archivo en blanco con el nombre especificado. Queremos crear el archivo llamado .gitignore para que podamos usar el comando:
touch .gitignore
Ignorar los archivos
Ahora tiene que agregar la línea que le dice a git que ignore los archivos de DS Store en su .gitignore. Puedes usar el nano editor para hacer esto.
nano .gitignore
Nano es bueno porque incluye instrucciones sobre cómo salir de él. ( Ctrl- Opara guardar, Ctrl- Xpara salir)
Copie y pegue algunas de las ideas de este resumen de Github que enumera algunos archivos comunes para 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 recorrerá todas las carpetas en su directorio y eliminará esos archivos de git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Empuja .gitignore hasta Github
Último paso, debe confirmar su archivo .gitignore.
git status
git add .gitignore
git commit -m '.DS_Store banished!'
Tuve que cambiar git-rm a git rm en lo anterior para que funcione:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
elimínelos usando git-rm
, y luego agregue .DS_Store a .gitignore
para evitar que se agreguen nuevamente. También puedes usar blueharvest para evitar que se creen todos juntos
En caso de que desee eliminar archivos DS_Store en cada carpeta y subcarpeta:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Ignóralos por:
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
Lo siguiente funcionó mejor para mí. Se manejaron archivos inigualables y archivos con modificaciones locales. Como referencia, esto fue en un sistema Mac 10.7 con git 1.7.4.4.
Encuentra y elimina:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
También ignoro globalmente .DS_Store en todos los repositorios estableciendo un archivo core.excludes global.
Primero, cree el archivo (si aún no existe):
touch ~/.gitignore
Luego agregue la siguiente línea y guarde:
.DS_Store
Ahora configure git para respetar el archivo globalmente:
git config --global core.excludesfile ~/.gitignore
Descubrí que la siguiente línea de snipplr funciona mejor para borrar 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 de todos modos se reproducirá.
Y tal como se mencionó anteriormente, agregue .DS_Store
al archivo .gitignore en la raíz de su proyecto. Entonces ya no estará a la vista (de repositorios).
Llego 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 'find'. 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 dejar el "-delete" si desea simplemente enumerarlos antes y después. Eso te asegurará que se han ido.
Con respecto al consejo ~ / .gitignore_global: tenga cuidado aquí. Desea colocar ese archivo agradable en .gitignore dentro del nivel superior de cada área de trabajo y confirmarlo, para que cualquiera que clone 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 con .DS_Store
, incluido ._.DS_Store
.
"*.DS_Store"
, para que find
el shell pase el asterisco en lugar de expandirlo.
Por alguna razón, ninguno de los anteriores funcionó en mi mac.
Mi solución es de la ejecución del terminal:
rm .DS_Store
Luego ejecute el siguiente comando:
git pull origin master
Esto funcionó para mí, combinado de dos respuestas de arriba:
Hay algunas soluciones para resolver este problema. Para evitar crear archivos .DS_Store, no use OS X Finder para ver carpetas. Una forma alternativa de ver carpetas es usar 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. Iniciar Terminal desde Aplicaciones: Utilidades En el indicador de shell de UNIX, ingrese el siguiente comando UNIX: sudo find / -name ".DS_Store" -depth -exec rm {} \; Cuando se le solicite una contraseña, ingrese la contraseña de administrador de Mac OS X.
Este comando es buscar y eliminar todas las apariciones de .DS_Store comenzando desde la raíz (/) del sistema de archivos a través de toda la máquina. Para configurar este comando para que se ejecute como una tarea programada, siga los pasos a continuación: Inicie la Terminal desde Aplicaciones: Utilidades En el indicador de shell de UNIX ingrese el siguiente comando de UNIX:
sudo crontab -e Cuando se le solicite 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 * * * root find / -name ".DS_Store" -depth -exec rm {} \;
Esto se llama entrada crontab, que tiene el siguiente formato:
Minuto Hora DayOfMonth Month DayOfWeek Usuario Comando.
La entrada crontab significa que el sistema ejecutará el comando automáticamente a la 1:15 AM todos los días por la cuenta llamada root.
El comando comienza desde encontrar todo el camino hasta. Si el sistema no se está ejecutando, este comando no se ejecutará.
Para guardar la entrada, presione la tecla Esc una vez, luego presione simultáneamente Mayús + z + z.
Nota: La información en el Paso 4 es solo para el editor vi.
agregue esto a su archivo .gitignore
#Ignore folder mac
.DS_Store
guarda esto y haz commit
git add -A
git commit -m "ignore .DS_Store"
y ahora ignoras esto para todos tus commits
La mejor manera de deshacerse de este archivo para siempre y no tener que preocuparse nunca más es
hacer un archivo global .gitignore:
echo .DS_Store >> ~ / .gitignore_global
Y dígale a git que desea usar este archivo para todos sus repositorios:
git config --global core.excludesfile ~ / .gitignore_global ¡Y eso es todo! .DS_Store está fuera de tu camino.
No es necesario eliminar .DS_STORE
localmente
Solo agrégalo al .gitignore
archivo
El archivo .gitignore es solo un archivo de texto que le dice a Git qué archivos o carpetas debe ignorar en un proyecto.
Comandos
nano .gitignore
.DS_Store
Luego haz clicCTRL+X > y > Hit Return
git status
Para echar un último vistazo a tus cambiosgit add .gitignore
git commit -m 'YOUR COMMIT MESSAGE'
git push origin master