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.
El .git/info/exclude
archivo tiene el mismo formato que cualquier .gitignore
archivo. Otra opción es establecer core.excludesFile
el nombre de un archivo que contiene patrones globales.
Tenga en cuenta que si ya tiene cambios sin clasificar, debe ejecutar lo siguiente después de editar sus patrones de ignorar:
git update-index --assume-unchanged <file-list>
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 se establece la variable de entorno, anulará la ubicación del repositorio en el que se encuentre, lo que probablemente no sea lo que desea.
Editar : Otra forma es usar:
git update-index --skip-worktree <file-list>
Invertirlo por:
git update-index --no-skip-worktree <file-list>
git update-index --assume-unchanged [<file>...]
después de hacer la adición al archivo de exclusión. Los cambios no se recogerán hasta entonces.skip-worktree
probablemente sería preferibleassume-unchanged
.Actualización : considere usar en su
git update-index --skip-worktree [<file>...]
lugar, ¡gracias @danShumway! Vea la explicación de Borealid sobre la diferencia de las dos opciones .Vieja respuesta:
Si necesita ignorar los cambios locales en los archivos rastreados (lo tenemos con modificaciones locales en los archivos de configuración), use
git update-index --assume-unchanged [<file>...]
.fuente
git update-index --assume-unchanged my-file.php
para comenzar a ser ignorado. ¡Gracias por el consejo!git update-index --no-assume-unchanged my-file.php
.git/info/exclude
es lo que desea (para evitar contaminar el .gitignore a menudo compartido y rastreado)--assume-unchanged
antes de leer tu actualización . Me deshice--no-assume-unchanged
y luego hice--skip-worktree
... ¿Estoy en el claro?Agregue las siguientes líneas a la sección [alias] de su archivo .gitconfig
Ahora puede usar
git ignore my_file
para ignorar los cambios en el archivo local ygit unignore my_file
dejar de ignorarlos.git ignored
enumera los archivos ignorados.Esta respuesta se obtuvo de http://gitready.com/intermediate/2009/02/18/tempomporary-ignoring-files.html .
fuente
Tienes varias opciones:
.gitignore
archivo sucio (o no confirmado) en su directorio de trabajo (o aplíquelo automáticamente usando topgit o alguna otra herramienta de parche).$GIT_DIR/info/exclude
archivo, si esto es específico de un árbol.git config --global core.excludesfile ~/.gitignore
y agrega patrones a tu~/.gitignore
. Esta opción se aplica si desea ignorar ciertos patrones en todos los árboles. Lo uso para.pyc
y.pyo
archivos, por ejemplo.Además, asegúrese de utilizar patrones y no enumerar archivos explícitamente, cuando corresponda.
fuente
git config --global
configurar la opción globalmente.Creo que estás buscando:
que ignoran los cambios hechos locales
Aquí está http://devblog.avdi.org/2011/05/20/keep-local-modifications-in-git-tracked-files/ ¡ más explicaciones sobre estas soluciones!
para deshacer el uso:
fuente
--skip-worktree
y--assume-unchanged
en esta pregunta SO--skipworktree
, debería cambiar de opinión más adelante y desear comenzar a rastrear el archivo nuevamente?git update-index --no-skip-worktree <file>
Puede instalar algunos alias git para simplificar este proceso. Esto edita el
[alias]
nodo de su.gitconfig
archivo.Los atajos que esto instala para usted son los siguientes:
git ignore config.xml
config.xml
, evitando que cometa accidentalmente esos cambios.git unignore config.xml
config.xml
, lo que le permitirá nuevamente confirmar esos cambios.git ignored
Los construí haciendo referencia a la respuesta de phatmann, que presenta una
--assume-unchanged
versión de la misma.La versión que presento utiliza
--skip-worktree
para ignorar los cambios locales. Ver la respuesta de Borealid para obtener una explicación completa de la diferencia, pero--skip-worktree
el propósito fundamental es que los desarrolladores cambien los archivos sin el riesgo de cometer sus cambios. .El
git ignored
comando presentado aquí usagit ls-files -v
y filtra la lista para mostrar solo aquellas entradas que comienzan con laS
etiqueta. LaS
etiqueta denota un archivo cuyo estado es "omitir el árbol de trabajo". Para obtener una lista completa de los estados de los archivos que se muestran engit ls-files
: consulte la documentación de la-t
opción engit ls-files
.fuente
'!git ls-files -v | grep "^S"'
? El comando no funciona para mí con él allí ... y parece funcionar bien con él eliminado.Expansion of alias 'ignored' failed; 'git' is not a git command
. Esto tiene sentido; sin el signo de exclamación: git alias tu comandogit git ls-files …
.git ignore <filename>
, solo se aplica a ese directorio. Y cuando finalmente desee realizar sus cambios en ese archivo y confirmar y enviar al control remoto, ¡solo use el prácticogit unignore <filename>
para comenzar a rastrearlo temporalmente de nuevo! ¡Gracias!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:Este es un archivo normal .gitignore al que git hace referencia al decidir qué ignorar. Como 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.
fuente
git check-ignore <file-name>
para verificar. LMK si te funciona=
:git config --global core.excludesfile ~/.gitignore
.gitignore
archivo en el directorio de inicio y le dije a git que lo usara, luego eliminé los archivos que me gustaría rastrear localmente. Sin embargo, después de presionar los cambios, el repositorio remoto también eliminó esos archivos. ¿Hice algo mal?.gitignore
se trata de ignorar los archivos que existen en su directorio local. Lo que debería haber hecho esgit rm --cached
eliminarlos del repositorio pero dejarlos en su local. Debería poder volver a su confirmación anterior con algo comogit reset --soft HEAD^
deshacer esa confirmación y recuperar sus archivos. Esa es la belleza de git: todo sigue ahí en tu historia de git.Para ignorar los archivos no rastreados, especialmente si se encuentran en (algunas) carpetas que no se rastrean, una solución simple es agregar un
.gitignore
archivo a cada carpeta no rastreada e ingresar en una sola línea que contenga*
seguida de una nueva línea. Es una solución realmente simple y directa si los archivos no rastreados están en algunas carpetas. Para mí, todos los archivos provenían de una sola carpeta sin seguimientovendor
y lo anterior simplemente funcionó.fuente
Si su repositorio aún no tiene un archivo .gitignore, entonces una solución simple es crear un archivo .gitignore y agregarlo
.gitignore
a la lista de archivos a ignorar.fuente
.gitignore
archivo compartido en la parte superior. Pero mis archivos sucios están en una carpeta profunda, así que agregué los míos.gitignore
junto a ellos. +1