¿Cómo organizar el repository git cuando necesita rastrear solo algunos files de 1000?

Si alguien piensa que la pregunta del tema es incorrecta, puede editarla.

Tenemos un package bastante grande aquí, donde solo se están modificando algunos directorys. Quiero decir que hay muchas routes de directory que tienen muchos más files, entonces realmente necesitamos rastrear con git. Entonces en api/dir/dir2/contrib/ hay 10 files, y solo se necesita rastrear 2. tenemos muchos lugares como ese, y realmente se vuelve complicado usar gitignore para esto. La primera opción fue ignorar todos los files, y git add solo aquellos files que necesito confirmar con -f flag, esto es realmente molesto de hacer cada vez … ¿Hay alguna solución mejor para organizar dicho repository?

Puede ignorar todo y agregar los files que no desea ignorar al file .gitignore , con el prefijo de un signo de exclamación.

Ejemplo:

 * !.gitignore !foo.txt 

Esto ignoraría todo excepto los files .gitignore y foo.txt en la carpeta raíz.

Desafortunadamente, no es tan fácil cuando se trata de files en directorys.

Supongamos que tengo la siguiente estructura:

 /.gitignore /foo.txt /sub/foo.txt /sub/some_other.txt /sub2/sub21/bar.txt /sub2/sub21/some_other2.txt 

Solo quiero include bar.txt y foo.txt e ignorar todo lo demás.

* ignora todo, por lo que también ignora las subcarpetas. Simplemente agregando !sub/foo.txt no es suficiente para hacer que git !sub/foo.txt -ignore ese file. Lo que realmente tienes que hacer es lo siguiente:

  1. un-ignore sub !sub/
  2. un-ignore sub/foo.txt !sub/foo.txt

Esto se volverá muy engorroso si tiene una jerarquía de directorys profunda.

Para ignorar bar.txt , se requiere lo siguiente:

 !sub2/ !sub2/sub21/ !sub2/sub21/bar.txt