¿Cómo ignorar todos los directorios / archivos ocultos recursivamente en un repositorio git?

128

Me gustaría que Git ignore todos los archivos y directorios ocultos. es decir

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

¿Existe una regla simple para cubrir esto sin agregar específicamente cada entrada?

Poe
fuente

Respuestas:

165

Simplemente agregue un patrón a .gitignore

.*
!/.gitignore

Editar: se agregó el .gitignorearchivo en sí (es importante si aún no se ha confirmado).

Daniel Böhmer
fuente
3
Es posible que desee agregar a la fuerza algunos archivos que son necesarios después de esto. p.ej. el archivo .htaccess Según sus requisitos, por supuesto.
dakdad el
3
@dakdad: Gracias por la sugerencia. Mejora la respuesta. Si Poe tiene algunos archivos especiales como .htaccessya registrados, siguen siendo seguidos. gitignoresolo es importante para archivos nuevos.
Daniel Böhmer el
@ DanielBöhmer Tal vez esto se salga del tema, pero ¿hay alguna razón para ignorar solo /.gitignorey no todos los .gitignorearchivos, independientemente de dónde se encuentre? Es decir, ¿por qué no enumerar !.gitignore(sin barra)?
Jason Young
1
@JasonYoung Pregunta interesante. Bueno, este patrón ignora solo el archivo en sí. Encuentro esto más conciso sin efectos secundarios para un ejemplo para copiar y pegar. Por supuesto, probablemente puede ignorar cualquier .gitignorearchivo en su .gitignorearchivo de nivel superior . Pero esa elección depende de usted.
Daniel Böhmer
64

.gitignore solo afectará a los archivos que aún no se hayan "agregado".

Para hacer nuevas entradas .gitignore afecta a todos los archivos

  1. Hacer cambios a .gitignore
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status debería mostrar "nada que confirmar (directorio de trabajo limpio)" `
Nat Darke
fuente
La línea "no se ha" agregado "ya es la clave aquí, porque si ya confirmó un archivo dado que ignorar no funcionará más en él, debe eliminarlo del repositorio y la próxima vez que lo cree, el .gitignore lo ignorará
Georgi Peev
21

En .git/info/exclude, agregue esta línea:

.*

Esto hará que ignorar todos los archivos ocultos / punto sea recursivamente el predeterminado para cada repositorio en la máquina. De .gitignoreesta manera, no se necesita un archivo separado para cada repositorio.

slayedbylucifer
fuente