¿Cómo puedo Quitar.¿DS Almacena archivos desde un repositorio Git?


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

Author: jubobs, 2008-09-20

22 answers

Eliminar archivos existentes del repositorio:

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

Añadir la línea

.DS_Store

Al archivo .gitignore, que se puede encontrar en el nivel superior de su repositorio (o creado si no está allí ya). Puede 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!'
 1877
Author: benzado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-09 23:59:00

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 capaz de 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
 213
Author: Turadg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-14 23:42:43

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, agrega este archivo a tu configuración global de git:

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

Editar:

Se han eliminado los iconos, ya que es posible que deban confirmarse como activos de la aplicación.

 122
Author: Nerve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-16 08:58:05

En algunas situaciones es posible que también desee ignorar algunos archivos globalmente. Para mí, .DS_Store es uno de ellos. He aquí cómo:

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

(O cualquier archivo de su elección)

Luego edita el archivo como un repositorio .gitignore. Ten en cuenta que creo que tienes que usar una ruta absoluta.

 51
Author: webmat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-01 20:46:37

Tuve que cambiar git-rm a git rm en lo anterior para que funcionara:

find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
 13
Author: David Kahn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-04 18:32:55

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

git rm --cached -f *.DS_Store
 11
Author: Reggie Pinkham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-11 21:14:25

Abra el terminal y escriba "cd "

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

  2. nano .gitignore

  3. Añadir esto .DS_Store

  4. Escriba "ctrl + x"

  5. Tipo " y "

  6. Enter para guardar el archivo

  7. git add .gitignore

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

 11
Author: Karthick Vadivel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-24 10:03:15

Elimínelos usando git-rm y luego agregue .DS_Store a .gitignore para evitar que se añadan de nuevo. También puede usar blueharvest para evitar que se creen todos juntos

 8
Author: Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-20 10:05:35

La respuesta más votada es increíble, pero ayudando a los novatos como yo, aquí está cómo crear el .gitignore, edítelo, guárdelo, elimine los archivos que ya haya agregado a git y luego empuje el archivo a Github.

Crear el .gitignore file

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

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. Puede utilizar el editor nano para hacer esto.

nano .gitignore

Nano es bueno porque incluye instrucciones sobre cómo salir de ella. (Ctrl-O para guardar, Ctrl-X para salir)

Copie y pegue algunas de las ideas de este Github gist que enumera algunas ideas comunes archivos a 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 directrices generales.

Eliminar los archivos ya agregados a git

Finalmente, necesita eliminar realmente esos archivos de DS Store de su directorio.

Utilice este gran comando de la respuesta votada superior. Esto pasará por todos los carpetas en tu directorio, y elimina esos archivos de git.

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

Empuja .gitignore hasta Github

Último paso, es necesario realmente confirmar su.archivo gitignore.

git status

git add .gitignore

git commit -m '.DS_Store banished!'

 6
Author: Joshua Dance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-31 06:41:27

Lo siguiente funcionó mejor para mí. Manejó archivos sin igual y archivos con modificaciones locales. Como 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 estableciendo un núcleo global.excluidesfile.

Primero, crea el archivo (si no existe):

touch ~/.gitignore

Luego agregue la siguiente línea y guarde:

.DS_Store

Ahora configure git para respetar el archivo a nivel mundial:

git config --global core.excludesfile ~/.gitignore
 5
Author: jordantbro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-28 00:52:59

Encontré que la siguiente línea de snipplr hace lo mejor en limpiar todo .DS_Store, incluyendo uno que tiene modificaciones locales.

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

Option cached opción, mantiene su local .DS_Store ya que va a ser reproducido de todos modos.

Y al igual que se mencionó todo lo anterior, añadir .DS_Store a .archivo gitignore en la raíz de su proyecto. Entonces ya no estará en tus ojos (de repos).

 4
Author: manat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-22 04:34:18

Utilice este comando para eliminar los archivos existentes:

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

Luego añadir .DS_Store a .gitignore

 4
Author: Sunny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-18 03:05:34

Llego un poco tarde a la fiesta, pero tengo una buena respuesta. Para quitar el .Archivos DS_Store, utilice 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 fuera el "-delete" si desea simplemente enumerarlos antes y después. Eso te asegurará que se han ido.

Con respecto al~/.gitignore_global consejos: tenga cuidado aquí. Tú quieres para colocar ese bonito archivo .gitignore dentro del nivel superior de cada área de trabajo y cometerlo, para que cualquiera que clone su repositorio obtenga el beneficio de su uso.

 2
Author: zeozod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-25 06:00:53

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

Mi solución es desde terminal run

       rm .DS_Store

Entonces

        git pull origin master
 1
Author: Invincible,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-10 09:06:36

Al inicializar su repositorio, omita el comando git que contiene

-u

Y no debería ser un problema.

 1
Author: dav1dhunt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-30 15:08:49

Esto funcionó para mí, combinación de dos respuestas desde arriba:

  • git git rm c cached-f *.DS_Store
  • git git commit-m "filter-branch index index-filter' git rmached cached -- ignorar-no coincidir .DS_Store "
  • master git push origin master force force
 1
Author: JLunceford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-28 16:16:38

Esto funcionará:

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

Elimina todos los archivos cuyos nombres terminan con .DS_Store, incluyendo ._.DS_Store.

 1
Author: John Topley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-06 17:28:48

En caso de que desee eliminar los archivos DS_Store a cada carpeta y subcarpeta:


En caso de DS_Store ya comprometido:
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
 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-22 21:09:59
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force
 0
Author: JZ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-19 01:01:44

Hay algunas soluciones para resolver este problema. Para evitar crear .Archivos DS_Store, no utilice el Buscador de OS X para ver carpetas. Una forma alternativa de ver carpetas es usar la línea de comandos UNIX. Para quitar el .Archivos DS_Store se puede utilizar un producto de terceros llamado DS_Store Terminator. Para eliminar el .Archivos DS_Store de todo el sistema se puede usar un comando de shell de UNIX. Iniciar Terminal desde Aplicaciones: Utilidades En el símbolo del shell de UNIX, introduzca el siguiente comando UNIX: sudo encontrar / -nombre ".DS_Store " - profundidad-exec rm {} \; Cuando se le solicite una contraseña, introduzca la contraseña de administrador de Mac OS X.

Este comando es para buscar y eliminar todas las ocurrencias 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: Iniciar Terminal desde Aplicaciones: Utilidades En el símbolo del shell de UNIX escriba el siguiente comando de UNIX:

Sudo crontab-e Cuando se le solicite una contraseña introduzca 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:

Minute Hour dayOfMonth Month DayOfWeek Comando de usuario.

La entrada crontab significa que el comando será ejecutado por el sistema automáticamente a la 1:15 AM todos los días por la cuenta llamada arraigar.

El comando comienza desde find hasta . Si el sistema no está ejecutando este comando no se ejecutará.

Para guardar la entrada presione la tecla Esc una vez, luego presione simultáneamente Shift + z+ z.

Nota: La información en el paso 4 es solo para el editor vi.

 0
Author: vinny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-01 09:54:05

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 todas tus confirmaciones

 0
Author: Ezequiel García,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-17 17:16:39

Eliminar archivos ignorados:

(.DS_Store)

$ find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
 0
Author: Cubiczx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-02 10:10:31