Entiendo que un archivo .gitignore oculta archivos específicos del control de versiones de Git. Tengo un proyecto (LaTeX) que genera muchos archivos adicionales (.auth, .dvi, .pdf, registros, etc.) mientras se ejecuta, pero no quiero que se rastreen.
Soy consciente de que podría (tal vez debería) hacerlo para que todos esos archivos se coloquen en una subcarpeta separada en el proyecto, ya que podría ignorar la carpeta.
Sin embargo, ¿hay alguna manera factible de mantener los archivos de salida en la raíz del árbol del proyecto y usar .gitignore para ignorar todo excepto los archivos que estoy rastreando con Git? Algo como
# Ignore everything
*
# But not these files...
script.pl
template.latex
# etc...
Respuestas:
fuente
wp/
. Ej. ) Pero no quiero ignorar algunos archivos en esa carpeta (pwp/path/to/some/location/*
. Ej .). La única forma en que pude hacerlo funcionar fuegit add -f wp/path/to/some/location/*
!*/
excepción de Simont!*/
marca la diferencia en mis inútiles intentos de arreglar un.gitignore
archivo para que funcione. Muchas gracias.Si desea ignorar todo el contenido de un directorio, excepto un archivo dentro de él, puede escribir un par de reglas para cada directorio en la ruta del archivo. Por ejemplo .gitignore para ignorar la carpeta pippo excepto de pippo / pluto / paperino.xml
.gitignore
fuente
foo
yfoo/*
son no lo mismo. Para que esto funcione, debe usarlofoo/*
para la carpeta baseDesea usar en
/*
lugar de*
o*/
en la mayoría de los casosEl uso
*
es válido, pero funciona de forma recursiva. No buscará en los directorios a partir de ese momento. La gente recomienda usar los!*/
directorios de la lista blanca nuevamente, pero en realidad es mejor incluir en la lista negra la carpeta de nivel más alto con/*
El código anterior podría ignorar todos los archivos a excepción de
.gitignore
,README.md
,folder/a/file.txt
,folder/a/b1/
yfolder/a/b2/
, y todo lo contenido en estas dos últimas carpetas. (Y.DS_Store
y*.log
archivos serían ignorados en esas carpetas.)Obviamente podría hacer, por ejemplo,
!/folder
o!/.gitignore
también.Más información: http://git-scm.com/docs/gitignore
fuente
.DS_Store
archivos no se ignoran, pero a través de la línea de comandos esto no es un problema. Para evitar esto, tuve que mover**/.DS_Store
todas las demás reglas a continuación./*
entonces!/nested/folder/*
(o el equivalente!/nested/folder
) sin hacerlo!/nested/
o!/nested
primero. (y probablemente/nested/*
en el medio). Un truco para recordar es que si estás en la lista blanca de una subcarpeta profundamente anidada, debes ennegrecer a los niños de cada subcarpeta y esas listas negras terminarán con la "estrella diagonal" ...Un poco más específico:
Ejemplo: Ignora todo
webroot/cache
, pero siguewebroot/cache/.htaccess
.Observe la barra inclinada (/) después de la
cache
carpeta:FALLAS
TRABAJOS
fuente
fuente
Para ignorar algunos archivos en un directorio, debe hacer esto en el orden correcto :
Por ejemplo, ignore todo en la carpeta "aplicación" excepto index.php y la carpeta "config" preste atención al pedido .
Debes negar lo que quieres primero.
FALLAS
application/*
!application/config/*
!application/index.php
TRABAJOS
!application/config/*
!application/index.php
application/*
fuente
git status
para verificar si sus cambios.gitignore
funcionan como se esperabagit status
no le va a decir qué está mirando y qué se ignora, ¿cómo puede saber si esto está funcionando?Puede usar
git config status.showUntrackedFiles no
y todos los archivos no rastreados estarán ocultos para usted. Verman git-config
para más detalles.fuente
Para excluir la carpeta de .gitignore, se puede hacer lo siguiente.
Esto ignorará todos los archivos / subcarpetas dentro,
bower_components
excepto/highcharts
.fuente
Hay un montón de preguntas similares sobre esto, así que publicaré lo que escribí antes:
La única forma en que conseguí que esto funcionara en mi máquina fue hacerlo de esta manera:
Observe cómo debe permitir explícitamente el contenido para cada nivel que desee incluir. Entonces, si tengo subdirectorios 5 profundos debajo de los temas, todavía necesito explicarlo.
Esto es del comentario de @ Yarin aquí: https://stackoverflow.com/a/5250314/1696153
Estos fueron temas útiles:
También intenté
y
**/wp-content/themes/**
o
/wp-content/themes/**/*
Nada de eso funcionó para mí tampoco. Un montón de rastro y error!
fuente
Tuve un problema con la subcarpeta.
No funciona:
Trabajos:
fuente
Intenté todas las respuestas como se dan aquí arriba, pero ninguna funcionó para mí. Después de leer la documentación de gitignore ( aquí ) descubrí que si excluye una carpeta primero, los nombres de archivo en la subcarpeta no se indexan. Entonces, si usa el signo de exclamación después para incluir un archivo, no se encuentra en el índice y, por lo tanto, no se incluye en su cliente git.
Esa fue la forma de encontrar la solución. Comencé agregando excepciones para todas las subcarpetas en mi árbol de carpetas para que funcionara, lo cual es un gran trabajo. Luego pude compactar la configuración detallada a la siguiente configuración, lo cual es un poco contrario a la documentación.
Trabajo .gitignore:
Como resultado, veo en mi cliente git que solo los dos archivos dentro de la carpeta Pro / 3rdparty / domain / modulename / se están organizando para la próxima confirmación, y eso fue exactamente lo que estaba buscando.
Y si necesita incluir en la lista blanca varias subcarpetas de la misma carpeta, agrupe las líneas de exclamación debajo de la declaración de exclusión de esta manera:
De lo contrario, no funcionará como se esperaba.
fuente
Eso es lo que funcionó para mí, quería comprometer solo un complemento de Cordova para el repositorio:
fuente
Sé que llego tarde a la fiesta, pero aquí está mi respuesta.
Como dijo @Joakim, para ignorar un archivo, puede usar algo como a continuación.
pero si el archivo está en directorios anidados, es un poco difícil escribir manualmente las reglas.
Por ejemplo, si queremos omitir todos los archivos en un
git
proyecto, pero no ena.txt
cuál se encuentraaDir/anotherDir/someOtherDir/aDir/bDir/cDir
. Entonces, nuestro.gitignore
será algo como estoLo anterior dado
.gitignore
archivo omitirá todos los directorios y archivos excepto!aDir/anotherDir/someOtherDir/aDir/bDir/cDir/a.txt
Como habrás notado, es difícil definir esas reglas.
Para resolver este obstáculo, he creado una aplicación de consola simple llamada git-do-not-ignore que generará las reglas para usted. He alojado el proyecto en github con instrucciones detalladas.
Ejemplo de uso
Salida
También hay una versión web simple disponible aquí
Gracias.
fuente
Tengo a Jquery y Angular de Bower. Bower los instaló en
El jquery minimizado está dentro del
dist
directorio y angular está dentro delangular
directorio. Solo necesitaba que los archivos minimizados se comprometieran con github. Un poco de manipulación de .gitignore y esto es lo que logré conjurar ...Espero que alguien pueda encontrar esto útil.
fuente
Así es como lo hice:
Úselo
gig status -u
para ver archivos individuales en directorios no rastreados de forma recursiva, congit status
solo ver carpetas, lo que podría engañarlo para que piense que todo dentro de ellos fue rastreadofuente
Solución simple si necesita ignorar todo excepto algunos archivos y pocas carpetas raíz :
La magia está en
/*
(como se describió anteriormente) ignora todo en la carpeta (raíz) PERO NO de forma recursiva.fuente
También tuve algunos problemas con la negación de archivos individuales. Pude cometerlos, pero mi IDE (IntelliJ) siempre se quejó de los archivos ignorados, que se rastrean.
Se muestran los dos archivos, que he excluido de esta manera:
Al final, esto funcionó para mí:
La clave fue la negación de la carpeta
typo3conf/
primero.Además, parece que el orden de las declaraciones no importa . En su lugar, debe negar explícitamente todas las subcarpetas, antes de poder negar archivos individuales en él.
La carpeta
!public/typo3conf/
y el contenido de la carpetapublic/typo3conf/*
son dos cosas diferentes para .gitignore.Gran hilo! Este problema me molestó por un tiempo;)
fuente
Nada funcionó para mí hasta ahora porque estaba tratando de agregar un jar de lib.
Esto no funcionó:
Esto funcionó:
fuente
Tengo esto funcionando
fuente
Tuve el mismo problema que OP, pero ninguna de las 10 mejores respuestas en realidad funcionó .
Finalmente descubrí lo siguiente
Sintaxis incorrecta
Sintaxis correcta:
Explicación de la página de manual de gitignore :
Ejemplo extendido:
$ árbol.
$ cat .gitignore
$ git status --untracked-files --no ignorado
fuente
Esencia
Y probablemente incluya:
Referencia
Desde https://git-scm.com/docs/gitignore :
fuente
Parece que encontré algo que funcionó para mí y que nadie más mencionó.
Básicamente, parece negar que se ignore un subdirectorio, debe tener dos entradas, una para el subdirectorio en sí
!subdir/
y luego otra que se expande a todos los archivos y carpetas debajo de él!subdir/**/*
fuente