2012-05-25 13 views
112

Tengo algunos archivos rastreados en un repositorio que se modifican automáticamente al compilar el código. No quiero desvincularlos, simplemente no quiero que aparezcan modificados y no quiero que se reproduzcan cuando agregue git.Git: Ignorar archivos rastreados

¿Esto es posible?

+5

posible duplicado de [git: ¿puedo comprometer un archivo e ignorar los cambios de contenido?] (Http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore- the-content-changes) –

+3

Si la compilación ** genera automáticamente estos archivos, no se los debe seguir en git. –

+0

He aquí un breve tutorial sobre gitignore que puede serle útil: https://learningpassion.wordpress.com/2016/06/17/git-tutorial-day-to-day-use-part-4-gitignore-diff-and -difftools-moving-and-removing-files/ – joker

Respuesta

159

Sure.

git update-index --assume-unchanged file 

Para deshacer y comenzar a seguir una vez más:

git update-index --no-assume-unchanged [<file> ...] 
+1

¿Qué sucede con los archivos en este estado cuando hago modificaciones en ellos? – haymansfield

+1

@haymansfield la página de ayuda del comando dice lo siguiente '' 'Git fallará (correctamente) en caso de que necesite modificar este archivo en el índice, p. cuando se fusiona en un compromiso; por lo tanto, en caso de que el archivo supuestamente no rastreado se cambie en sentido ascendente, tendrá que manejar la situación manualmente .''' – Parham

+1

@Parham, la documentación está siendo modificada para tener más claro el objetivo de la bandera --assume-unchanged debido a malentendidos del usuario. En Git, perder datos sería desvergonzado, por lo tanto, los objetos adicionales que guardan los datos se consideran "graciosos". Esa cita será cambiada. –

1

Una otra solución utilizando atributos Git y% f en el comando de filtro:

git config filter.orig.clean "cat %f.orig" 
cp filename filename.orig 
echo "filename filter=orig" >> .git/info/attributes 
echo "filename.orig" >> .git/info/exclude 
+4

¿Podría darnos más detalles sobre lo que esto significa y lo que está haciendo por casualidad? – rogerdpack

2

Otro enfoque es mantener un "seguimiento" archivo de plantilla, luego tiene copias locales sin seguimiento, por ejemplo: https://gist.github.com/canton7/1423106

Luego, allí no habrá problemas si el archivo se cambia dentro de git, etc. y puede usar .gitignore (finalmente) en el archivo local sin seguimiento.

+5

Esta respuesta fue en realidad inicialmente por Seth Robertson, pero fue eliminada por un moderador * sin comentarios * (¿qué?) Así que la resucité aquí. Estimados mods: si quieres eliminar unilateralmente las respuestas, proporciona una razón para hacerlo ... – rogerdpack

Cuestiones relacionadas