[ GIT ] Inconsistencias en archivos remotos y locales

Cuando utilizamos git pull origin master internamente se ejecutan dos comandos: `git fetch` y git merge.

El primer comando git fetch origin master descarga el contenido de la rama (branch) master del repositorio origin Mientras, el comando git merge junta los archivos descargados con la rama master local. Es muy frequente que tengamos algunos archivos differentes a los del repositorio remoto y a la hora de hacer el mergese presenten inconsistencias entre el repositorio remoto y el local.

La forma más común de corregir esto es editando el archivo con problemas (usar git statussobre la raíz del repositorio) y seleccionar la versión que necesitemos, es decir, entre la version remota y la local. Git automaticamente añade las dos versiones en el archivo aludido concatenado las líneas de texto difentes entre las dos versiones. Estas diferencias son fácilmente visibles por que git añade adicionalmente las líneas >>>>[hash commit remoto] para las diferencias provenientes del repositorio remoto, y >>>HEAD para la version local. Ambas versiones están separadas por los símbolos =======. Recuerda, estas modificaciones son automáticamente añadidas en el archivo que presenta el problema.

Una vez que hemos borrado la versión que no queremos proseguimos a salvar el archivo, añadirlo al Stage de git (con git add [archivo problematico]) y luego hacemos un commit (git commit -m "alguna mensaje").

Arreglar inconsitencias en archivos grandes

Algunas veces editar manualmente cada archivo problemático puede ser engorroso o simplemente ya sabemos que alguna versión es mejor que la otra. Por ejemplo la versión local (nuestra versión) puede estar más actualizada o la versión remota (la del ellos) puede ser más estable.

En versiones git > 1.6.1 podemos utilizar la opción --ours (nuestra versión) o --theirs (la de ellos) para seleccionar si queremos mantener la versión local o la versión remota (respectivamente). Esta opción sólo es válida para el comando git checkout [archivo problemático] . De esta manera podemos hacer:

git checkout --ours [archivo problemático]

Para quedarnos con nuestra versión.

git checkout --theirs [archivo problemático]

Para quedarnos con la versión remota.

Published by

Juan Escamilla Mólgora

Hago ecología matemática y computacional para grandes datos ambientales bajo plataformas descentralizadas basadas en la nube. En particular estoy investigando métodos novedosos de fusión de datos mutirelacionados para mejorar los modelos de predicción de especies biológicas. También diseñé y programé el Sistema de Alerta temprana de Incendios para México y Centro América

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.