¿Cómo puedo hacer que git ignore futuras revisiones de un archivo?
Creé una versión predeterminada de un archivo incluido en un repositorio de git. Es importante que cuando alguien clone el repositorio, obtenga una copia de este archivo. Sin embargo, me gustaría configurar git para que ignore los cambios en este archivo más adelante. .gitignore
sólo funciona en archivos sin seguimiento.
Mi motivación es que este archivo contiene información específica de la máquina. Me gustaría proporcionar valores predeterminados y, al mismo tiempo, permitir que las personas realicen cambios locales que no se enviarán al repositorio de origen, lo que creará conflictos de fusión cuando realicemos nuevos cambios.
Generalmente somos bastante vagos y usamos git add .
mucho, así que estoy bastante seguro de que si no puedo decirle a git que ignore este archivo, los cambios terminarán siendo confirmados y enviados.
Para resumir,
- Me gustaría crear un archivo, llamarlo,
default_values.txt
que se agrega a mi repositorio de git y se incluye cuando alguien clona ese repositorio. git add .
no debe agregarsedefault_values.txt
al compromiso.- Este comportamiento debe transmitirse a cualquier clon del repositorio.
Como muchos otros han mencionado, una buena solución moderna es:
git update-index --skip-worktree default_values.txt
Eso ignorará los cambios en ese archivo, tanto locales como ascendentes, hasta que decida permitirlos nuevamente con:
git update-index --no-skip-worktree default_values.txt
Puede obtener una lista de archivos marcados como omitidos con:
git ls-files -v . | grep ^S
Tenga en cuenta que, a diferencia de --skip-worktree
, el --assume-unchanged
estado se perderá una vez que se realice un cambio ascendente.
Lo que estás buscando es git update-index --assume-unchanged default_values.txt
.
Consulte los documentos para obtener más detalles: http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html