Trabajando con Git puedes verte en situaciones que van más allá del uso de los comandos básicos o de las operaciones más comunes. Sirva este recopilatorio para documentar algunas de estas situaciones.

Saltos de línea en sistemas Unix y Windows

En sistemas Unix el final de línea se representa con un avance de línea (LF). Y en Windows con un retorno de carro más un avance de línea (CRLF). Esto supone un problema en proyectos desarrollados desde ambas plataformas.

Afortunadamente se puede configurar Git para estos casos. Los desarrolladores que trabajen en Windows podrán convertir automáticamente los CRLF en LF y viceversa usando:

git config core.autocrlf true

Los desarrolladores que trabajen en Linux o Mac sólo tendrán que convertir automáticamente los CRLF en LF en la confirmación de archivos (commit) usando:

git config core.autocrlf input

Y en proyectos desarrollados desde una única plataforma se podrá desactivar esta funcionalidad:

git config core.autocrlf false

Se puede utilizar la opción --global para usar esta configuración en todos los repositorios del equipo.

Aparecen archivos como cambiados sin estarlo

Cuando un repositorio se clona entre máquinas Windows y Linux/Unix pueden aparecer archivos como modificados cuando realmente sólo está detectando permisos diferentes con un mensaje similar a este:

old mode 100755
new mode 100644

Para solucionarlo se le puede indicar a Git que ignore los cambios en los permisos de archivo. Como en otros parámetros, esto puede hacerse de varias maneras:

  1. En la configuración global de Git:
    git config --global core.filemode false
  2. En el archivo de configuración ~/.gitconfig:
    [core]
         filemode = false
  3. En la configuración del repositorio:
    git config core.filemode false

Acceder a los repositorios a través de un proxy

Si te encuentras detrás de un proxy y tienes problemas para clonar o descargar desde un repositorio remoto, o se obtiene un error del tipo Unable to access '...' Couldn't resolve host '...', entonces tendrás que configurar configurar el servidor proxy así:

git config --global http.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

y/o para https:

git config --global https.proxy http://proxyUsername:proxyPassword@proxy.server.com:port

Combinar dos proyectos Git en una carpeta raíz

Se puede hacer desde la línea de comandos y es más fácil de lo que puede parecer:

git init .
mv .git .gituno
git init .
mv .git .gitdos

y podrás actualizar uno u otro de la siguiente forma:

git --git-dir=.gituno add prueba.txt
git --git-dir=.gitdos commit -m "Prueba"

En un entorno Unix es fácil crear un par de alias para git como:

#!/bin/sh
alias gituno='git --git-dir=.gituno'
alias gitdos='git --git-dir=.gitdos'

El archivo .gitignore también se convierte en un importante aliado para determinar qué ficheros pueden pertenecer a uno u otro repositorio.

Reiniciar un repositorio borrando el historial

Parece que la solución más segura para no afectar a posibles submódulos es la siguiente:

git checkout --orphan rama_temporal
git add -A                             # Añade los ficheros actuales
git commit -m "Inicia el repositorio"  #   y los confirma
git branch -D main                     # Elimina la rama main
git branch -m main                     # Renombra la rama actual a main
git push -f origin main                # Fuerza el envío de la nueva rama main al remoto
git gc --aggressive --prune=all        # Borra los archivos antiguos

Última revisión: 15/09/2022

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *