gitignore simplemente no funciona. No puedo hacer que ignore los files .DS_Store & .gitignore

Tengo .gitignore d .DS_Store y .gitignore files. Pero todavía los veo en el "estado de git".

¿Puede alguien explicarme cómo puedo asegurarme de que los files que trato de ignorar no aparecen al verificar el estado?

 git status # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .DS_Store # .gitignore 

Tengo el file .DS_Store en todas las subcarpetas de mi repository. Entonces quiero que todos sean ignorados. ¿Que debería hacer?

He configurado el file .gitignore en el directory raíz de mi repository. ¿Debo copyr esto en todas las subcarpetas de git para ignorar estos files? ¿No es aceptable agregar .gitignore en el file .gitignore ?

EDITAR: 21 de enero de 2014 ==================

Todavía no puedo resolver esto. Los comentarios a continuación realmente no me ayudaron. Así que estoy volviendo a publicar mi consulta.

Debajo hay un fragment de mi salida de git status . La salida real abarca un par de páginas. Y todos los files en esta salida son files / carpetas que no quiero en mi repository. Estos son files no rastreados, así que nunca los he git add . Pero cuando creo un nuevo proyecto, tengo que search los files / carpetas relacionados en esta enorme list antes de agregarlos, lo que hace que todo el process sea un poco irritante.

 # Untracked files: # (use "git add <file>..." to include in what will be committed) # # ../../.DS_Store # ../../Classes/ # ../.DS_Store # ../Basics/.DS_Store # ../adt/.metadata/ # ../adt/Fundamentals/.classpath # ../adt/Fundamentals/.project # ../adt/Fundamentals/.settings/ # ../adt/Fundamentals/bin/ # .DS_Store # .metadata/ 

A continuación está mi file .gitignore . ¿Alguien puede señalar mi error?

 *.class *.pyc colors **/.DS_Store # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.ear #Eclipse files .project # folders .classpath/ .settings/ .metadata/ WEB-INF/lib/ META-INF/ Servers/ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] # C extensions *.so # Distribution / packaging bin/ build/ develop-eggs/ dist/ eggs/ lib/ lib64/ parts/ 

  1. No debes ignorar tu .gitignore . No creo que la característica de ignorar funcione cuando no la tienes en tu repository. No estoy seguro sin embargo.
  2. Los files que ya están rastreados no se ignorarán, incluso si los agrega a .gitignore . Si desea que se ignoren después de que ya se hayan agregado al repository, primero debe eliminarlos con el git rm filename .

Si desea ignorar un cambio en un file que git rastrea, puede especificar que debe asumir que el file no ha cambiado:

 git update-index --assume-unchanged file 

y para comenzar a rastrear cambios de nuevo hazlo:

 git update-index --no-assume-unchanged file 

si ya ha agregado un file que debe ignorarse por completo (.gitignore) primero debe hacerlo.

reference: https://www.kernel.org/pub/software/scm/git/docs/git-update-index.html
fuente: http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/

Esto es lo que debería parecer su .gitignore :

 .DS_Store 

Además, el .gitignore está destinado a ser rastreado, ignorando que no tiene sentido. Entonces, después de que haya actualizado el file para contener solo .DS_Store do:

 $ git add .gitignore $ git commit -m "Track .gitignore" 

Agrega las líneas

  **/.DS_Store **/.gitignore 

¿Por qué estás ignorando .gitignore ? Esto no tiene sentido. Si desea ignorar algunos files de forma local (es decir, no rastrear y publicar esta configuration en el repository remoto), utilice .git/info/exclude lugar. Simplemente agrega .DS_Store a él, eso es todo.

Experimento el mismo problema. La solución es agregar un .gitignore en su directory de inicio primero.

Mi fin, el repository .gitignore ya no aparece en el seguimiento de indexing.

Esto se está construyendo a partir de la respuesta de Jakub Jirutka. Estaba un poco confundido a primera vista, pero lo intenté y funcionó. Aquí está su respuesta declarada – con suerte – más claramente.

Su respuesta es simple: almacene files no deseados en .git/info/exclude (que está dentro de cada repository de git). Pon cada uno en una nueva línea.

El file .gitignore es útil para ayudar a ignorar los files y directorys que usted sabe que serán generados pero que no son deseados. El hecho de que puedas git add .gitignore y luego comprometerlo y presionarlo es realmente útil. Cuando clones este repository en otra computadora, por ejemplo, todos los files que se deben ignorar (después de ./configure; make; sudo make install; por ejemplo, generalmente genera files de ejemplo y muchos otros) serán ignorado (si están en el .gitignore .

Sin embargo, a veces, uno no está seguro de si se quiere un file en el repository o si el file simplemente existe fuera del control de git como si estuviera en un directory no controlado por git. Esto se puede hacer agregando esto al file de exclusión dentro del file de exclude dentro del directory .git/info .

Cada repository git tiene una carpeta .git. Para excluir por completo un file o directory, diríjase al buen terminal ole, cd a la raíz del repository (es decir, cd src/best_repo_eva ). Entonces verá un .git/ . Luego, cd .git/info/ . Probablemente solo habrá un file llamado exclude . Use su editor favorito (es broma, puede usar alas de mariposas para enfocar los rayos cósmicos en la atmósfera superior para voltear los bits correctos en el disco de la unidad;) para editar la exclude modo que contenga los files que desea excluir en nuevos líneas.

Solución más fácil: tiene dos files que desea excluir: tmp1 e ignoreadf

Ir a la terminal y …

  • cd src/best_repo_eva
  • echo -e "tmp tab \n ign lengüeta \n ign " >> .git/info/exclude

Las tabs, obviamente, solo funcionan si su terminal lo admite. Tenga en count el -e (admite escapes de barra invertida) y el \n (que se resalta con un espacio) entre los dos files.

Almacenar muchos files con un final similar, podría ser tan fácil como cd src/best_repo_eva luego echo -e $(ls -1 | grep "tmp") >> .git/info/exclude (eso es ls -ONE no ls -L – note que ls -a -1 no funciona, desafortunadamente). Eso almacenaría todos los files que contienen la secuencia "tmp" en el file de exclusión.

Tuve el mismo problema en Mac OS X. Tenía un file .gitignore en el repository, pero simplemente no funciona.

Lo que era raro cuando quería imprimir el contenido de .gitignore en la console con el command cat que imprimía, ya que estaba vacío. Cuando se abrió con vim, apareció como siempre.

La solución fue eliminar el file, crear uno nuevo y volver a poner el contenido. Después de eso, ignorar los files comenzó a funcionar y cuando cat .gitignore se imprimió correctamente.