11 Credenciales en caché para HTTPS

Si planea hacer push/pull usando HTTPS, le gustaría que Git almacenara en caché sus credenciales (nombre de usuario, contraseña) (o debería configurar las claves SSH, capítulo 12.1), por lo que no necesitará ingresarlos una y otra vez. Tendrá que configurarlo en cada ordenador al que quiera conectar GitHub.

Para mí HTTPS es más fácil de trabajar rápidamente. Es lo que GitHub recomienda, presumiblemente por las mismas razones. Empecé con HTTPS, pero finalmente cambié a SSH. Cualquiera está bien y puede cambiar de opinión más tarde.

No se explican detalladamente todos los comandos de shell (Apéndice A) ni Git. Este es un ejercicio de diagnóstico/configuración de caja negra.

11.1 Comience con un repositorio de prueba

Necesita un repositorio Git de prueba que funcione. Uno que exista localmente y de forma remota en GitHub, con el repositorio local de seguimiento a distancia.

Si acaba de verificar que puede interactuar con GitHub (capítulo 10) desde su computadora local, ese repositorio de prueba será perfecto.

Si acaba de verificar que puede trabajar con GitHub desde RStudio (capítulo 13), este repositorio de prueba también será perfecto.

Puede proceder cuando:

  • Tenga un repositorio de prueba.
  • Sepa en dónde está alojado en su computadora. Ejemplo:
    • /home/jenny/tmp/myrepo
  • Sepa en dónde está alojado en GitHub. Ejemplo:
    • https://github.com/jennybc/myrepo
  • Sepa que el repositorio local le hace seguimiento al repositorio remoto. En un shell con el directorio de trabajo configurado en el repositorio local de Git, ingrese:

    git remote -v

    Una salida como ésta confirma que buscar y subir están configuradas en direcciones URL remotas que apuntan a su repositorio de GitHub:

    origin  https://github.com/jennybc/myrepo (fetch)
    origin  https://github.com/jennybc/myrepo (push)

    Ahora ingrese:

    git branch -vv

Aquí se confirma que la branch maestra local tiene su branch principal GitHub (origen/master) como control remoto ascendente. ¿No entendió? Sólo compruebe que su resultado sea similar a este:

    master b8e03e3 [origin/master] line added locally

11.2 Compruebe que su Git es lo suficientemente nuevo como para tener un ayudante de credenciales

En un shell (Apéndice A), escriba:

git --version

y verifique que su versión es 1.7.10 o más reciente. Si no, actualice Git (capítulo 7) o use claves SSH (capítulo 12).

11.3 Activar el ayudante de credenciales

11.3.0.1 Windows

En el shell, ingrese:

git config --global credential.helper wincred

11.3.0.2 Windows, plan B

Si eso no parece funcionar, instale un ayudante de credenciales externo.

  • Descargue la aplicación git-credential-winstore.exe.
  • ¡Ejecútela! Debería funcionar si Git está en la variable de entorno PATH. Si no, vaya al directorio donde descargó la aplicación y ejecute lo siguiente:

    git-credential-winstore -i "C:\Program Files (x86)\Git\bin\git.exe"

11.3.0.3 Mac

Averigüe si el asistente de credenciales ya está instalado. En el shell, ingrese:

git credential-osxkeychain

y esta debería ser el resultado:

usage: git credential-osxkeychain <get|store|erase>

Si no obtiene este resultado, significa que necesita una versión más reciente de Git, ya sea a través de herramientas de línea de comandos de desarrollo o Homebrew. Vuelva a la sección Mac del capítulo (7).

Una vez que haya confirmado que tiene el ayudante de credenciales, escriba:

git config --global credential.helper osxkeychain

11.3.0.4 Linux

En el shell, ingrese:

git config --global credential.helper 'cache --timeout=10000000'

para almacenar su contraseña por diez millones de segundos o alrededor de 16 semanas, suficiente para un semestre.

11.3.1 Active un requerimiento de usuario / contraseña

Cambie un archivo en su repositorio local y haga commit. Haga lo que desee. Aquí hay comandos de shell que funcionarán:

echo "adding a line" >> README.md
git add -A
git commit -m "A commit from my local computer"

¡Ahora hágale push!

git push -u origin master

Una última vez se le pedirá su nombre de usuario y contraseña, que se espera quede almacenado en caché.

Ahora súbalo UNA VEZ MÁS.

git push

NO se le debe pedir su nombre de usuario y contraseña, sino que debe ver ‘Todo actualizado’.

Regocíjese y cierre el shell.