2010-08-30 18 views
8

Digamos que tengo un archivo .noise en la raíz de mi repositorio. Este archivo es frecuentemente modificado y confirmado por terceros en mi repositorio remoto.Ignorar archivos que ya están en un repositorio SIN eliminarlos

Quiero ignorar por completo este archivo mientras estoy cometiendo algo, pero aún quiero incluir los cambios de los demás, y no quiero eliminar el archivo. Si uso .git/info/exclude, entonces tengo que git rm --cached el archivo para que no aparezca en el repositorio.

Ahora haciendo eso me lleva a:

# On branch master 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .noise 
# 
# No changes added to commit (use "git add" and/or "git commit -a") 

a:

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# deleted: .noise 
# 

Los 'cambios que se cometan' me asusta. No deseo enviar la eliminación de .noise de nuevo al control remoto, tampoco quiero que se elimine en mi filessytem. Simplemente no quiero que Git vea o tenga algo que ver con eso. I pensó que no se suponía que git rm --cached realizara ningún cambio? ¿No es así?

¿Alguna idea?

+0

¿Cambia este archivo usted mismo? ¿Desea ver cambios remotos de este archivo en su árbol de trabajo? – Shcheklein

Respuesta

14

Se puede utilizar:

$ git update-index --assume-unchanged -- .noise 

update-index --assume-unchanged hará Git continuar para seguir el archivo, pero sus cambios no se reflejarán en el índice o añadido al repositorio.

+0

Por lo que yo entiendo, de esta manera funcionará si el archivo no cambiará en realidad. Git no podrá extraer confirmaciones que modifiquen este archivo de alguna forma: "Git fallará (con gracia) en caso de que necesite modificar este archivo en el índice, por ejemplo, al fusionarse en una confirmación, por lo tanto, en caso de que el archivo asumido no rastreado se cambie en sentido ascendente, tendrás que manejar la situación manualmente ". (Ver git-update-index (1)) – Shcheklein

+0

'git update-index --assume-unchanged' es algo que intenté hace un tiempo. ¡Sin efecto! Añadiendo el '- .noise' parecía hacerlo. Ahora es interesante porque pensé que el índice de actualización básicamente se desplazó por el directorio buscando cambios nuevamente. No sabía que tenía que ser llamado en archivos individuales. Gracias. –

+0

@Shcheklein "Git no podrá extraer confirmaciones que modifiquen este archivo de alguna manera" Bueno, tal vez esta no sea la solución definitiva. Tendré que probar y verificar si se reducen los commit remotos. –

Cuestiones relacionadas