tag - ignorar archivos git
¿Cómo configuro git para ignorar algunos archivos localmente? (9)
Agregue las siguientes líneas a la sección [alias] de su archivo .gitconfig
ignore = update-index --assume-unchanged
unignore = update-index --no-assume-unchanged
ignored = !git ls-files -v | grep "^[[:lower:]]"
Ahora puede usar git ignore my_file
para ignorar los cambios en el archivo local, y git unignore my_file
para dejar de ignorar los cambios. git ignored
enumera los archivos ignorados.
Esta respuesta se obtuvo de http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html .
¿Puedo ignorar los archivos localmente sin contaminar la configuración global de git para todos los demás? Tengo archivos sin seguimiento que son spam en mi estado de git pero no quiero confirmar los cambios de configuración de git por cada pequeño archivo aleatorio sin seguimiento que tengo en mis sucursales locales.
Creo que estas buscando:
git update-index --skip-worktree FILENAME
Los cuales ignoran los cambios hechos localmente.
¡Aquí hay http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ más explicaciones sobre estas soluciones!
De la documentación relevante de Git :
Los patrones que son específicos de un repositorio en particular pero que no necesitan ser compartidos con otros repositorios relacionados (por ejemplo, los archivos auxiliares que viven dentro del repositorio pero son específicos para el flujo de trabajo de un usuario) deben ir al
$GIT_DIR/info/exclude
.
El archivo .git/info/exclude
tiene el mismo formato que cualquier archivo .gitignore
. Otra opción es establecer core.excludesFile
con el nombre de un archivo que contiene patrones globales.
Tenga en cuenta que si ya tiene cambios sin etapas, debe ejecutar lo siguiente después de editar sus patrones de ignorar:
git update-index --assume-unchanged [<file>...]
Nota sobre $GIT_DIR
: esta es una notación utilizada en todo el manual de git simplemente para indicar la ruta al repositorio de git. Si la variable de entorno está configurada, entonces se anulará la ubicación de cualquier repositorio en el que esté, lo que probablemente no sea lo que desea.
No olvides reconocer un hecho con @joss lee answer.
git update-index --assume-unchanged directory/
Observe la barra diagonal (/) al final.
Puedes instalar algunos alias de git para simplificar este proceso. Esto edita el nodo [alias]
de su archivo .gitconfig
.
git config --global alias.ignore ''update-index --skip-worktree''
git config --global alias.unignore ''update-index --no-skip-worktree''
git config --global alias.ignored ''!git ls-files -v | grep "^S"''
Los accesos directos que este instala para usted son los siguientes:
-
git ignore config.xml
- git fingirá que no ve ningún cambio en el
config.xml
, lo que le impide cometer esos cambios accidentalmente.
- git fingirá que no ve ningún cambio en el
-
git unignore config.xml
- git reanudará el reconocimiento de sus cambios en
config.xml
, lo que le permitirá volver a realizar esos cambios.
- git reanudará el reconocimiento de sus cambios en
-
git ignored
- git mostrará una lista de todos los archivos que está "ignorando" de la manera descrita anteriormente.
Los construí refiriéndome a la respuesta de phatmann, que presenta una versión del mismo --assume-unchanged
una --assume-unchanged
.
La versión que presento utiliza --skip-worktree
para ignorar los cambios locales. Vea la respuesta de Borealid para obtener una explicación completa de la diferencia, pero esencialmente el propósito de --skip-worktree
es que los desarrolladores cambien los archivos sin el riesgo de cometerlos .
El comando git ignored
presenta aquí usa git ls-files -v
, y filtra la lista para mostrar solo las entradas que comienzan con la etiqueta S
La etiqueta S
denota un archivo cuyo estado es "skip worktree". Para obtener una lista completa de los estados de los archivos mostrados por git ls-files
: consulte la documentación de la opción -t
en git ls-files
.
Si su repositorio aún no tiene un archivo .gitignore, una solución simple es crear un archivo .gitignore, y en él agregar .gitignore
a la lista de archivos que se ignorarán.
Simplemente puede agregar un archivo .gitignore a su directorio de inicio, es decir, $HOME/.gitignore
o ~/.gitignore
. Luego dile a git que use ese archivo con el comando:
git config --global core.excludesfile ~/.gitignore
Este es un archivo .gitignore normal al que git hace referencia cuando decide qué ignorar. Ya que está en su directorio de inicio, se aplica solo a usted y no contamina ningún archivo .gitignore del proyecto.
He estado usando este enfoque durante años con excelentes resultados.
Tienes varias opciones:
- Deje un archivo
.gitignore
sucio (o no confirmado) en su directorio de trabajo (o aplíquelo automáticamente usando topgit o alguna otra herramienta de parche topgit ). - Coloque las
$GIT_DIR/info/exclude
en su$GIT_DIR/info/exclude
, si esto es específico de un árbol. - Ejecute
git config --global core.excludesfile ~/.gitignore
y agregue patrones a su~/.gitignore
. Esta opción se aplica si desea ignorar ciertos patrones en todos los árboles. Lo uso para.pyc
.pyo
y.pyo
, por ejemplo.
Además, asegúrese de estar usando patrones y no enumerar explícitamente los archivos, cuando corresponda.
Actualización : considere usar git update-index --skip-worktree [<file>...]
lugar, gracias @danShumway! Vea la explicación de Borealid sobre la diferencia de las dos opciones .
Respuesta antigua:
Si necesita ignorar los cambios locales a los archivos rastreados (tenemos que con las modificaciones locales a los archivos de configuración), use git update-index --assume-unchanged [<file>...]
.