Categorías
Programación

¿Cómo hacer para que GIT se olvide de un archivo?

Ocasionalmente en un proyecto disponemos de información sensible o archivos que no queremos subir al proyecto. Como por ejemplo logs, configuración de base de datos o archivos con claves de APIs entre otros. Desgraciadamente si no configuramos bien el .gitignore o si lo añadimos a posteriori git automaticamente realizara el seguimiento de este archivo.

¿Cómo hacer para que git se olvide de el permanentemente?

Es decir, para que el archivo no nos aparezca en el «git status» y lógicamente al hacer git commit no lo agregue al proyecto más… El comando básicamente es este:

Aunque este archivo deja de ser «cometido» por git seguirá presente dentro de nuestro proyecto local y repositorio. El problema, al menos por mi parte, cuando quieres actualizar el proyecto en otro lugar con «git pull» vas a obtener este mensaje:

Para solucionar esto ultimo puedes como te dicen arriba, actualizando los cambios con un commit si tienes cambios por guardar, apilar los cambios «git stash» o haciendo esta ñapa y sobreescribiendo los ficheros:

Si estas trabajando en otra rama debes sustituir «master» con la tuya. Creo que no hay que decir que perderás los datos que no hayas guardado en el proyecto local. Básicamente «git fetch» descarga el repositorio sin mezclar nada y el comando «git reset» digamos que sobreescribe los archivos con lo que hay en el repositorio.

Eliminar la carpeta node_modules

Una de las «típicas» es olvidar «ignorar» la carpeta node_modules, dentro del proyecto. Lo que ocasiona que subes todo lo innecesario al repositorio, la solución es esta:

Moraleja del asunto…

Pues que este post lo escribo básicamente para mi, por no configurar correctamente el archivo .gitignore desde un principio. Si se utiliza un IDE como Netbeans que añade archivos automáticamente al proyecto es bastante fácil olvidarse. Ademas esto es un resumen en Español de estas dos discusiones en Stackoverflow: parte 1 y parte 2. Como podéis comprobar no soy el único «noob» en esto. Por último recomiendo a todos los que queráis aprender Git y Github de una forma amena os recomiendo este curso de Codeschool (Ingles), yo ya lo tengo acabado.

Por Antón Zekeriev Rodin

Soy una persona más o menos normal con sus problemas e inquietudes, pero además de ello un ingeniero y desarrollador de Software con unos 10 años de experiencia en el sector. Actualmente intento montarlo por mi cuenta.