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/excludearchivo.
El .git/info/excludearchivo tiene el mismo formato que cualquier .gitignorearchivo. Otra opción es establecer core.excludesFileel 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-worktreeprobablemente 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.phppara comenzar a ser ignorado. ¡Gracias por el consejo!git update-index --no-assume-unchanged my-file.php.git/info/excludees lo que desea (para evitar contaminar el .gitignore a menudo compartido y rastreado)--assume-unchangedantes de leer tu actualización . Me deshice--no-assume-unchangedy 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_filepara ignorar los cambios en el archivo local ygit unignore my_filedejar de ignorarlos.git ignoredenumera los archivos ignorados.Esta respuesta se obtuvo de http://gitready.com/intermediate/2009/02/18/tempomporary-ignoring-files.html .
fuente
Tienes varias opciones:
.gitignorearchivo 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/excludearchivo, si esto es específico de un árbol.git config --global core.excludesfile ~/.gitignorey agrega patrones a tu~/.gitignore. Esta opción se aplica si desea ignorar ciertos patrones en todos los árboles. Lo uso para.pycy.pyoarchivos, por ejemplo.Además, asegúrese de utilizar patrones y no enumerar archivos explícitamente, cuando corresponda.
fuente
git config --globalconfigurar 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-worktreey--assume-unchangeden 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.gitconfigarchivo.Los atajos que esto instala para usted son los siguientes:
git ignore config.xmlconfig.xml, evitando que cometa accidentalmente esos cambios.git unignore config.xmlconfig.xml, lo que le permitirá nuevamente confirmar esos cambios.git ignoredLos construí haciendo referencia a la respuesta de phatmann, que presenta una
--assume-unchangedversión de la misma.La versión que presento utiliza
--skip-worktreepara ignorar los cambios locales. Ver la respuesta de Borealid para obtener una explicación completa de la diferencia, pero--skip-worktreeel propósito fundamental es que los desarrolladores cambien los archivos sin el riesgo de cometer sus cambios. .El
git ignoredcomando presentado aquí usagit ls-files -vy filtra la lista para mostrar solo aquellas entradas que comienzan con laSetiqueta. LaSetiqueta 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-topció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/.gitignoreo~/.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.gitignorearchivo 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?.gitignorese trata de ignorar los archivos que existen en su directorio local. Lo que debería haber hecho esgit rm --cachedeliminarlos 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
.gitignorearchivo 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 seguimientovendory 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
.gitignorea la lista de archivos a ignorar.fuente
.gitignorearchivo compartido en la parte superior. Pero mis archivos sucios están en una carpeta profunda, así que agregué los míos.gitignorejunto a ellos. +1