Saltar al contenido

¿Cómo excluyo archivos del archivo git?

Posterior a investigar con expertos en la materia, programadores de deferentes ramas y profesores dimos con la solución al dilema y la compartimos en este post.

Solución:

Creo que casi lo lograste: attributes se puede leer desde varios lugares, con .gitattributes siendo sólo los más comunes de ellos. La segunda, considerada una configuración por repositorio, es $GIT_DIR/info/attributes.

Para citar el manual:

Tenga en cuenta que attributes se toman por defecto de la .gitattributes archivos en el árbol que se está archivando. Si desea modificar la forma en que se genera la salida después del hecho (por ejemplo, se comprometió sin agregar un
export-ignore en su .gitattributes), ajustar el desprotegido .gitattributes archivar según sea necesario y utilizar --worktree-attributes opción. Alternativamente, puede mantener lo necesario attributes que debería aplicarse al archivar cualquier árbol en su
$GIT_DIR/info/attributes expediente.

Entonces, si es posible, pegue su lista a ese archivo y luego haga git archive.

Otro enfoque es no usar git archive pero en cambio simplemente tar el árbol de trabajo pasando tar la --exclude-from opción de línea de comandos que acepta un archivo. Esto no funcionaría para un repositorio simple, pero si está de acuerdo con verificar cosas antes de archivarlas, esto se puede hacer haciendo git read-tree y git checkout-index suministrado con la correcta $GIT_INDEX_FILE y $GIT_WORK_TREE env. variables

Otra posible solución es invertir el enfoque: tar (al menos GNU tar) admite una opción menos conocida de poder Eliminar cosas de un archivo en una canalización.

Básicamente, puedes hacer

 $ tar -C a_path -c -f - . 
   | tar -f - --wildcards --delete '*.pdf' >result.tar

para que el primero tar en la canalización archiva todo mientras que el segundo pasa todo excepto los archivos que coinciden con el *.pdf patrón de globo de concha.

Entonces, si la especificación de archivos para eliminar usando globos de shell se puede ajustar al límite de la línea de comandos, simplemente canalice la salida de git archive a un tar proceso que elimina las cosas que no se necesitan.

Puede crear un archivo tar y luego eliminar carpetas y archivos que no es necesario que estén dentro

git archive HEAD -o archive.tar
tar -f archive.tar --delete listoffiles1
tar -f archive.tar --delete listoffiles2
tar -f archive.tar --delete listoffiles..
tar -f archive.tar --delete listoffilesN

de esta manera, puede dividir su línea de comando para permanecer por debajo de la longitud máxima del argumento cli

en lugar de poner export-ignore en un (comprometido) .gitattributestambién puede ponerlo en un (no comprometido) $GIT_DIR/info/attributes expediente. O alternativamente dejar el .gitattributes no comprometido y usar el --worktree-attributes opción, también probablemente no sea tan agradable ya que deja su árbol de trabajo sucio.

Puntuaciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *