usar ignorar example como carpetas archivos agregar git gitignore

ignorar - gitignore file



Haz que.gitignore ignore todo excepto unos pocos archivos (17)

Un prefijo opcional ! lo que niega el patrón; Cualquier archivo coincidente excluido por un patrón anterior se incluirá nuevamente. Si un patrón negado coincide, esto anulará las fuentes de patrones de precedencia inferior.

# Ignore everything * # But not these files... !.gitignore !script.pl !template.latex # etc... # ...even if they are in subdirectories !*/ # if the files to be tracked are in subdirectories !*/a/b/file1.txt !*/a/b/c/*

Entiendo que un archivo .gitignore oculta archivos especificados del control de versiones de Git. Tengo un proyecto (LaTeX) que genera muchos archivos adicionales (.auth, .dvi, .pdf, logs, etc.) mientras se ejecuta, pero no quiero que se rastreen esos.

Soy consciente de que podría (quizás 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 forma viable 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...


Eso es lo que me ha funcionado, quería comprometer solo un complemento de Cordova al repositorio:

... plugins/* !plugins/cordova-plugin-app-customization


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 era hacerlo de esta manera:

# Ignore all directories, and all sub-directories, and it''s contents: */* #Now ignore all files in the current directory #(This fails to ignore files without a ".", for example #''file.txt'' works, but #''file'' doesn''t): *.* #Only Include these specific directories and subdirectories and files if you wish: !wordpress/somefile.jpg !wordpress/ !wordpress/*/ !wordpress/*/wp-content/ !wordpress/*/wp-content/themes/ !wordpress/*/wp-content/themes/* !wordpress/*/wp-content/themes/*/* !wordpress/*/wp-content/themes/*/*/* !wordpress/*/wp-content/themes/*/*/*/* !wordpress/*/wp-content/themes/*/*/*/*/*

Observe cómo debe permitir explícitamente el contenido para cada nivel que desee incluir. Así que si tengo subdirectorios 5 bajo temas, todavía tengo que explicarlo.

Esto es del comentario de @Yarin aquí: https://.com/a/5250314/1696153

Estos fueron temas útiles:

Yo tambien lo intenté

* */* **/**

y **/wp-content/themes/**

o /wp-content/themes/**/*

Nada de eso funcionó para mí, tampoco. Mucho rastro y error!


Intenté todas las respuestas como se indica aquí anteriormente, pero ninguna funcionó para mí. Después de leer la documentación de gitignore ( here ), descubrí que si excluye una carpeta primero, los nombres de archivos en la subcarpeta no se están indexando. 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 era la manera de encontrar la solución. Comencé agregando excepciones para todas las subcarpetas en mi árbol de carpetas para que funcione, lo que es un trabajo fantástico. Luego pude compactar la configuración detallada de la configuración a continuación, lo cual es un poco contrario a la documentación.

Trabajando .gitignore:

# Ignore the ''Pro'' folder, except for the ''3rdparty'' subfolder /Pro/* !Pro/3rdparty/ # Ignore the ''3rdparty'' folder, except for the ''domain'' subfolder /Pro/3rdparty/* !Pro/3rdparty/domain/ # Ignore the ''domain'' folder, except for the ''modulename'' subfolder Pro/3rdparty/domain/* !Pro/3rdparty/domain/modulename/

Como resultado, veo en mi cliente git que solo los dos archivos dentro de la carpeta Pro / 3rdparty / domain / modulename / se están preparando para la próxima confirmación, y eso era exactamente lo que estaba buscando.

Y si necesita incluir en la lista blanca varias subcarpetas de la misma carpeta, agrupe las líneas del signo de exclamación debajo de la declaración de exclusión de esta manera:

# Ignore the ''Pro'' folder, except for the ''3rdparty'' subfolder /Pro/* !Pro/3rdparty/ # Ignore the ''3rdparty'' folder, except for the ''domain'' & ''hosting'' subfolders /Pro/3rdparty/* !Pro/3rdparty/domain/ !Pro/3rdparty/hosting/ # Ignore the ''domain'' folder, except for the ''modulename'' subfolder Pro/3rdparty/domain/* !Pro/3rdparty/domain/modulename/ # Ignore the ''hosting'' folder, except for the ''modulename'' subfolder Pro/3rdparty/hosting/* !Pro/3rdparty/hosting/modulename/

De lo contrario, no funcionará como se esperaba.


Nada me funcionó hasta ahora porque estaba tratando de agregar un frasco de lib.

Esto no funcionó:

build/* !build/libs/* !build/libs/ !build/libs/myjarfile.jar

Esto funcionó:

build/* !build/libs


Para excluir la carpeta de .gitignore, se puede hacer lo siguiente.

!app/ app/* !app/bower_components/ app/bower_components/* !app/bower_components/highcharts/

Esto ignorará todos los archivos / subcarpetas dentro de bower_components excepción de /highcharts .


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 quieras primero.

Fallas

application/*

!application/config/*

!application/index.php

TRABAJOS

!application/config/*

!application/index.php

application/*


Puede usar git config status.showUntrackedFiles no y todos los archivos git config status.showUntrackedFiles no . Ver man git-config para más detalles.


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

pippo/* !pippo/pluto pippo/pluto/* !pippo/pluto/paperino.xml


Solución simple si necesita ignorar todo excepto unos pocos archivos y pocas carpetas raíz :

/* !.gitignore !showMe.txt !my_visible_dir

La magia está en /* (como se describió anteriormente), ignora todo en la carpeta PERO NO recursivamente.


También tuve algunos problemas con la negación de archivos individuales. Pude cometerlos, pero mi IDE (IntelliJ) siempre se quejaba de los archivos ignorados, que se rastreaban.

git ls-files -i --exclude-from .gitignore

Muestra los dos archivos, que he excluido de esta manera:

public/ !public/typo3conf/LocalConfiguration.php !public/typo3conf/PackageStates.php

Al final, esto me funcionó:

public/* !public/typo3conf/ public/typo3conf/* !public/typo3conf/LocalConfiguration.php !public/typo3conf/PackageStates.php

La clave fue la negación de la carpeta typo3conf/ first.

Además, parece que el orden de las declaraciones no importa . En su lugar, necesita negar explícitamente todas las subcarpetas, antes de poder negar archivos individuales en ellas.

La carpeta !public/typo3conf/ y el contenido de la carpeta public/typo3conf/* son dos cosas diferentes para .gitignore.

¡Gran hilo! Este problema me molestó por un tiempo;)


Tengo Jquery y Angular de Bower. Bower los instaló en

/public_html/bower_components/jquery/dist/bunch-of-jquery-files /public_html/bower_components/jquery/src/bunch-of-jquery-source-files /public_html/bower_components/angular/angular-files

El jquery minimizado está dentro del directorio dist y angular está dentro del directorio angular . Solo necesitaba archivos minimizados para ser comprometidos con github. Alguna manipulación de .gitignore y esto es lo que logré evocar ...

/public_html/bower_components/jquery/* !public_html/bower_components/jquery/dist /public_html/bower_components/jquery/dist/* !public_html/bower_components/jquery/dist/jquery.min.js /public_html/bower_components/angular/* !public_html/bower_components/angular/angular.min.js

Espero que alguien pueda encontrar esto útil.


Tengo este trabajo

# Vendor /vendor/braintree/braintree_php/* !/vendor/braintree/braintree_php/lib


Tuve un problema con la subcarpeta.

No funciona:

/custom/* !/custom/config/foo.yml.dist

Trabajos:

/custom/config/* !/custom/config/foo.yml.dist


Un poco más específico:

Ejemplo: webroot/cache todo en webroot/cache , pero mantenga webroot/cache/.htaccess .

Observe la barra (/) después de la carpeta de cache :

Fallas

webroot/cache* !webroot/cache/.htaccess

TRABAJOS

webroot/cache/* !webroot/cache/.htaccess


Desea utilizar /* lugar de * o */ en la mayoría de los casos

Usar * es válido, pero funciona de forma recursiva. No se verá en directorios a partir de entonces. La gente recomienda usar !*/ Para volver a agregar directorios a la lista blanca, pero en realidad es mejor poner en la lista negra la carpeta de nivel más alto con /*

# Blacklist files/folders in same directory as the .gitignore file /* # Whitelist some files !.gitignore !README.md # Ignore all files named .DS_Store or ending with .log **/.DS_Store **.log # Whitelist folder/a/b1/ and folder/a/b2/ # trailing "/" is optional for folders, may match file though. # "/" is NOT optional when followed by a * !folder/ folder/* !folder/a/ folder/a/* !folder/a/b1/ !folder/a/b2/ !folder/a/file.txt

El código anterior ignoraría todos los archivos excepto .gitignore , README.md , folder/a/file.txt , folder/a/b1/ y folder/a/b2/ y todo lo contenido en esas dos últimas carpetas. (Y los .DS_Store y *.log se ignorarán en esas carpetas).

Obviamente, podría hacer, por ejemplo !/.gitignore !/folder o !/.gitignore .

Más información: http://git-scm.com/docs/gitignore


# ignore these * # except foo !foo