macos - que - ¿Cómo puedo eliminar archivos.DS_Store de un repositorio Git?
gitignore ds_store all folders (22)
Abra el terminal y escriba "cd <ProjectPath>"
Eliminar archivos existentes:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
nano .gitignore
Añade este
.DS_Store
escribe "ctrl + x"
Escriba "y"
Entrar para guardar el archivo
git add .gitignore
git commit -m ''.DS_Store removed.''
¿Cómo puedo eliminar esos molestos archivos Mac OS .DS_Store
de un repositorio Git?
Al inicializar su repositorio, omita el comando git que contiene
-u
y no debería ser un problema.
Combinando las respuestas de benzado y webmat, actualizando con git rm
, no fallando en los archivos encontrados que no están en repo, y haciéndolo pegable 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
Descubrí que la siguiente línea de snipplr funciona mejor al borrar todo .DS_Store, incluido uno que tiene modificaciones locales.
find . -depth -name ''.DS_Store'' -exec git-rm --cached ''{}'' /; -print
- la opción en caché, mantiene su .DS_Store local ya que se reproducirá de todos modos.
Y como se mencionó anteriormente, agregue .DS_Store al archivo .gitignore en la raíz de su proyecto. Entonces ya no estará en tu vista (de repos).
Eliminar archivos existentes del repositorio:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Agrega la linea
.DS_Store
al archivo .gitignore
, que se puede encontrar en el nivel superior de su repositorio (o creado si no está ya allí). Puedes hacerlo fácilmente con este comando en el directorio superior
echo .DS_Store >> .gitignore
Entonces
git add .gitignore
git commit -m ''.DS_Store banished!''
Eliminar archivos ignorados:
(.DS_Store)
$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
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)
A continuación, edite el archivo como .gitignore de un repo. Tenga en cuenta que creo que hay que utilizar una ruta absoluta.
En caso de que quiera eliminar los archivos DS_Store de cada carpeta y subcarpeta:
En caso de que DS_Store ya esté comprometido:find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
Ignorarlos 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
Esto funcionará:
find . -name "*.DS_Store" -type f -exec git-rm {} /;
Borra todos los archivos cuyos nombres terminan con .DS_Store
, incluido ._.DS_Store
.
Esto me funcionó, combo de dos respuestas de arriba:
- $ git rm --cached -f * .DS_Store
- $ git commit -m "filter-branch --index-filter ''git rm --cached --ignore-unmatch .DS_Store"
- $ git push origin master --force
Hay algunas soluciones para resolver este problema. Para evitar la creación de archivos .DS_Store, no use el OS X Finder para ver las carpetas. Una forma alternativa de ver las carpetas es usar la línea de comandos de UNIX. Para eliminar los archivos .DS_Store, se puede usar un producto de terceros llamado DS_Store Terminator. Para eliminar los archivos .DS_Store de todo el sistema, se puede usar un comando de shell de UNIX. Inicie Terminal desde Aplicaciones: Utilidades En el indicador de comandos de UNIX, ingrese el siguiente comando de UNIX: sudo find / -name ".DS_Store" -depth -exec rm {} /; Cuando se le solicite una contraseña, ingrese la contraseña del administrador de Mac OS X.
Este comando es para buscar y eliminar todas las apariciones de .DS_Store a partir de 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 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 del 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 denomina entrada crontab, que tiene el siguiente formato:
Minuto hora DayOfMonth Month DayOfWeek User Command.
La entrada crontab significa que el sistema ejecutará automáticamente el comando a las 1:15 am todos los días mediante la cuenta llamada root.
El comando comienza desde encontrar todo el camino hasta. Si el sistema no está ejecutando este comando no se ejecutará.
Para guardar la entrada, presione la tecla Esc una vez, luego presione Shift + z + z simultáneamente.
Nota: La información en el Paso 4 es solo para el editor vi.
La mejor solución para abordar este problema es ignorar globalmente estos archivos de todos los repositorios de git en su sistema. Esto se puede hacer creando un archivo gitignore global como:
vi ~/.gitignore_global
Agregando 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 han eliminado los iconos, ya que es posible que deban comprometerse como activos de aplicación.
La respuesta más votada es increíble, pero ayudando a los novatos como yo, aquí es cómo crear el archivo .gitignore, editarlo, guardarlo, eliminar los archivos que ya hayas agregado a git, y luego subir el archivo a Github.
Crea el archivo .gitignore
Para crear un archivo .gitignore, solo 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 tiene que agregar la línea que le dice a git que ignore los archivos de DS Store en su .gitignore. Puedes usar el editor nano para hacer esto.
nano .gitignore
Nano es bueno porque incluye instrucciones sobre cómo salir de él. ( Ctrl - O para guardar, Ctrl - X para salir)
Copie y pegue algunas de las ideas de este github gist 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 añadidos a git.
Finalmente, debe eliminar esos archivos de DS Store de su directorio.
Utilice este gran comando de la respuesta más votada. Esto irá a través de todas las carpetas en su directorio y eliminará esos archivos de git.
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Empuje .gitignore hasta Github
Último paso, debes confirmar tu archivo .gitignore.
git status
git add .gitignore
git commit -m ''.DS_Store banished!''
Llego un poco tarde a la fiesta, pero tengo una buena respuesta. Para eliminar los archivos .DS_Store, use los siguientes comandos de 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 desea simplemente listarlos 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 cometerlo, para que cualquier persona que clone su repositorio obtenga el beneficio de su uso.
Lo siguiente funcionó mejor para mí. Manejó archivos incomparables, y archivos con modificaciones locales. Para referencia, esto fue en un sistema Mac 10.7 ejecutando 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 archivo core.excludes global.
Primero, crea el archivo (si no existe uno):
touch ~/.gitignore
Luego agrega la siguiente línea y guarda:
.DS_Store
Ahora configura git para respetar el archivo globalmente:
git config --global core.excludesfile ~/.gitignore
Por alguna razón ninguno de los anteriores funcionó en mi mac.
Mi solución es desde la ejecución de terminal
rm .DS_Store
Entonces
git pull origin master
Si no puede eliminar los archivos porque tienen cambios en el uso por etapas:
git rm --cached -f *.DS_Store
Tuve que cambiar git-rm por git rm en lo anterior para que funcione:
find . -depth -name ''.DS_Store'' -exec git rm --cached ''{}'' /; -print
Utilice este comando para eliminar los archivos existentes:
find . -name ''*.DS_Store'' -type f -delete
Luego agregue .DS_Store
a .gitignore
agrega esto a tu archivo .gitignore
#Ignore folder mac
.DS_Store
Guarda esto y compromete
git add -A
git commit -m "ignore .DS_Store"
Y ahora ignoras esto por todos tus compromisos.
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.
$ git commit -m "filter-branch --index-filter ''git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force