¿Cómo puedo eliminar files .DS_Store de un repository de Git?

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

Eliminar files existentes del repository:

 find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch 

Agrega la linea

 .DS_Store 

al file .gitignore , que se puede encontrar en el nivel superior de su repository (o creado si ya no está allí). Entonces

 git add .gitignore git commit -m '.DS_Store banished!' 

Combinando las respuestas de benzado y webmat, actualizando con git rm , no fallando en los files encontrados que no están en repository, y haciéndolo compatible de forma genérica 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 files de todos los repositorys git en su sistema. Esto se puede hacer creando un file global de gitignore como:

 vi ~/.gitignore_global 

Agregar reglas para ignorar files 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 file a su configuration global de git:

 git config --global core.excludesfile ~/.gitignore_global 

Editar:

Se eliminaron los íconos, ya que es posible que deban comprometerse como activos de la aplicación.

En algunas situaciones, es posible que también desee ignorar algunos files de forma global. Para mí, .DS_Store es uno de ellos. Así es cómo:

 git config --global core.excludesfile /Users/mat/.gitignore 

(O cualquier file de su elección)

Luego edite el file como un .gitignore de un repository. Tenga en count que creo que debe usar una ruta absoluta.

Tuve que cambiar de git-rm a git rm en el 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 vuelvan a agregar. También puedes usar blueharvest para evitar que se creen todos juntos

Si no puede eliminar los files porque tienen cambios por etapas, use:

 git rm --cached -f *.DS_Store 

Abra el terminal y escriba "cd <ProjectPath>"

  1. Eliminar files 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

  2. nano .gitignore

  3. Agrega esto .DS_Store

  4. escribe "ctrl + x"

  5. Escribe "y"

  6. Ingresa para save el file

  7. git add .gitignore

  8. git commit -m '.DS_Store removed.'

Lo siguiente funcionó mejor para mí. Manejo de files sin igual y files con modificaciones locales. Como reference, esto fue en un sistema Mac 10.7 ejecutando 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 repositorys estableciendo un core.excludesfile global.

Primero, crea el file (si aún no existe uno):

 touch ~/.gitignore 

A continuación, agregue la siguiente línea y guárdelo:

 .DS_Store 

Ahora configure git para respetar el file globalmente:

 git config --global core.excludesfile ~/.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 

– opción de caching, mantiene su .DS_Store local, ya que se reproducirá de todos modos.

Y tal como se mencionó anteriormente, agregue el file .DS_Store a .gitignore en la raíz de su proyecto. Entonces ya no estará a su vista (de repos).

Use este command para eliminar los files existentes:

 find . -name '*.DS_Store' -type f -delete 

A continuación, agregue .DS_Store a .gitignore

La mejor respuesta es excelente, pero ayudando a los novatos como yo, aquí se explica cómo crear el file .gitignore, editarlo, savelo, eliminar los files que ya hayas agregado a git, y luego upload el file a Github.

Crea el file .gitignore

Para crear un file .gitignore, puede touch el file que crea un file en blanco con el nombre especificado. Queremos crear el file llamado .gitignore para que podamos usar el command:

touch .gitignore

Ignora los files

Ahora tiene que agregar la línea que le dice a git que ignore los files de DS Store en su .gitignore. Puede usar el editor nano para hacer esto.

nano .gitignore

Nano es bueno porque incluye instrucciones sobre cómo salir de él. ( CtrlO para save, CtrlX para salir)

Copie y pegue algunas de las ideas de este Github gist que enumera algunos files comunes para ignorar. Los más importantes, para responder esta pregunta, serían:

 # OS generated files # ###################### .DS_Store .DS_Store? 

Los # son comentarios y te ayudarán a organizar tu file a medida que vaya creciendo.

Este artículo de Github también tiene algunas ideas y pautas generales.

Eliminar los files ya agregados a git

Finalmente, debe eliminar esos files de DS Store de su directory.

Use este gran command de la respuesta más votado. Esto pasará por todas las carpetas de su directory y eliminará esos files de git.

find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

Empujar .gitignore hasta Github

El último paso, necesitas comprometer tu file .gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

Esto funcionará:

 find . -name *.DS_Store -type f -exec git-rm {} \; 

Hay algunas soluciones para resolver este problema. Para evitar crear files .DS_Store, no use el buscador de OS X para ver carpetas. Una forma alternativa de ver carpetas es usar la command-line de UNIX. Para eliminar los files .DS_Store se puede usar un producto de terceros llamado DS_Store Terminator. Para eliminar los files .DS_Store de todo el sistema, se puede usar un command de shell de UNIX. Iniciar Terminal desde Aplicaciones: Utilidades En el indicador de shell de UNIX, ingrese el siguiente command de 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 command es para search y eliminar todas las ocurrencias de .DS_Store a partir de la raíz (/) del sistema de files a través de toda la máquina. Para configurar este command para que se ejecute como una tarea progtwigda, siga los pasos a continuación: Inicie el Terminal desde Aplicaciones: Utilidades En el indicador de shell UNIX ingrese el siguiente command 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 keyboard una vez e ingrese lo siguiente:

15 1 * * * root find / -name ".DS_Store" -depth -exec rm {} \;

Esto se denomina input crontab, que tiene el siguiente formatting:

Hora de minuto Día de mes de mes Orden de usuario de día de semana.

La input crontab significa que el command será ejecutado por el sistema automáticamente a la 1:15 a.m. todos los días por la count llamada raíz.

El command comienza desde encontrar todo el path hasta. Si el sistema no se está ejecutando, este command no se ejecutará.

Para save la input, 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.

Por alguna razón, ninguno de los anteriores funcionó en mi mac.

Mi solución es de terminal run

  rm .DS_Store 

Entonces

  git pull origin master 

Al inicializar su repository, omita el command git que contiene

 -u 

y no debería ser un problema.

Esto funcionó para mí, combinado 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"
  • Maestro de origen de $ git push –force
 $ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store" $ git push origin master --force 

agregue esto a su file .gitignore

 #Ignore folder mac .DS_Store 

save esto y hacer commit

 git add -A git commit -m "ignore .DS_Store" 

y ahora ignoras esto para todos tus commits