Pregunta

¿Cómo puedo eliminar esos molestos Mac OS X? .DS_Store archivos de un repositorio Git?

¿Fue útil?

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>"

  1. Eliminar archivos existentes:find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

  2. nano .gitignore

  3. Agrega esto .DS_Store

  4. escribe "ctrl+x"

  5. Escribe "y"

  6. Ingrese para guardar el archivo

  7. git add .gitignore

  8. 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 clic CTRL+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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top