Pregunta ¿Cómo configuro git para ignorar algunos archivos localmente?


¿Puedo ignorar los archivos localmente sin contaminar la configuración global de git para todos los demás? He desbloqueado archivos que son spam en mi estado de git, pero no quiero confirmar los cambios de configuración de git para cada pequeño archivo aleatorio sin seguimiento que tengo en mis sucursales locales.


952
2017-11-18 01:36


origen


Respuestas:


De la documentación relevante de Git:

Los patrones que son específicos de un repositorio particular pero que no necesitan ser compartidos con otros repositorios relacionados (por ejemplo, archivos auxiliares que viven dentro del repositorio pero son específicos del flujo de trabajo de un usuario) deben ir al $GIT_DIR/info/exclude archivo.

los .git/info/exclude archivo tiene el mismo formato que cualquier .gitignore archivo. Otra opción es establecer core.excludesFile al nombre de un archivo que contiene patrones globales.

Tenga en cuenta que, si ya tiene cambios sin grabar, 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 por todas partes el manual de git simplemente para indicar la ruta al repositorio de git. Si la variable de entorno está configurada, anulará la ubicación del repositorio en el que se encuentre, que probablemente no sea el que desea.


1298
2017-11-18 01:38



Actualizar: Considere usar git update-index --skip-worktree [<file>...] en cambio, gracias @danShumway! Ver La explicación de Borealid sobre la diferencia de las dos opciones.


Respuesta anterior:

Si necesita ignorar los cambios locales a los archivos rastreados (tenemos eso con modificaciones locales en los archivos de configuración), utilice git update-index --assume-unchanged [<file>...].


374
2018-01-22 15:39



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 puedes usar git ignore my_file ignorar los cambios en el archivo local, y git unignore my_file dejar de ignorar los cambios. git ignored lista los archivos ignorados.

Esta respuesta fue obtenida de http://gitready.com/intermediate/2009/02/18/temporarily-ignoring-files.html.


128
2017-08-19 15:21



Tienes varias opciones:

  • Deje un sucio (o no comprometido) .gitignore archivo en su directorio de trabajo (o aplíquelo automáticamente usando topgit o algún otro tipo de herramienta de parche).
  • Coloque las exclusiones en su $GIT_DIR/info/exclude archivo, si esto es específico para un árbol.
  • correr git config --global core.excludesfile ~/.gitignore y agregue patrones a su ~/.gitignore. Esta opción se aplica si desea ignorar ciertos patrones en todas árboles. Yo uso esto para .pyc y .pyo archivos, por ejemplo.

Además, asegúrese de estar utilizando patrones y no enumerando explícitamente los archivos, cuando corresponda.


89
2017-11-18 01:45



Creo que estás buscando:

git update-index --skip-worktree FILENAME

que ignoran los cambios realizados locales

Aquí está http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ más explicaciones sobre estas soluciones!


39
2017-07-11 06:38



Puedes instalar algunos git aliases para hacer este proceso más simple. Esto edita el [alias] nodo de tu .gitconfig archivo.

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 instala para usted son los siguientes:

  • git ignore config.xml
    • git fingirá que no ve ningún cambio en config.xml - evitando que accidentalmente cometa esos cambios.
  • git unignore config.xml
    • git continuará reconociendo sus cambios en config.xml - permitiéndote volver a cometer esos cambios.
  • git ignored
    • git listará todos los archivos que está "ignorando" de la manera descrita anteriormente.

Construí estos haciendo referencia a la respuesta de Phatmann - que presenta un --assume-unchanged versión de lo mismo.

La versión que presento usa --skip-worktree por ignorar los cambios locales. Ver La respuesta de Borealid para una explicación completa de la diferencia, pero esencialmente --skip-worktreeEl propósito es para que los desarrolladores cambien archivos sin el riesgo de comprometer sus cambios.

los git ignored El comando presentado aquí usa git ls-files -vy filtra la lista para mostrar solo aquellas entradas que comienzan con S etiqueta. los S etiqueta denota un archivo cuyo estado es "skip worktree". Para obtener una lista completa de los estados de archivo mostrados por git ls-files: ver la documentación para el -t opción de git ls-files.


30
2017-08-22 18:27



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. Dado que está en su directorio de inicio, se aplica solo a usted y no contamina ningún archivo de proyecto .gitignore.

He estado usando este enfoque durante años con excelentes resultados.


22
2017-10-14 12:58