¿Cómo configurar el nombre de usuario y las contraseñas para diferentes repositorios git?


17
─[$] cat ~/.gitconfig

[user]
    name = Shirish Agarwal
    email = xxxx@xxxx.xxx
[core]
    editor = leafpad
    excludesfiles = /home/shirish/.gitignore
    gitproxy = \"ssh\" for gitorious.org
[merge]
    tool = meld
[push]
    default = simple
[color]
    ui = true
    status = auto
    branch = auto

Ahora quiero poner mis credenciales de git para github, gitlab y gitorious para que cada vez no tenga que buscar las credenciales en el navegador. ¿Cómo se puede hacer esto para que sea automatizado?

Estoy corriendo zsh

Respuestas:


21

Usando SSH

El enfoque común para manejar la autenticación git es delegarlo a SSH. Por lo general, configura su clave pública SSH en el repositorio remoto ( por ejemplo, en GitHub ), y luego la usa siempre que necesita autenticarse. Por supuesto, puede utilizar un agente clave, ya sea manejado por su entorno de escritorio o manualmente con ssh-agenty ssh-add.

Para evitar tener que especificar el nombre de usuario, también puede configurarlo en SSH, en ~/.ssh/config; por ejemplo tengo

Host git.opendaylight.org
  User skitt

y luego puedo clonar usando

git clone ssh://git.opendaylight.org:29418/aaa

(tenga en cuenta la ausencia de un nombre de usuario allí).

Utilizando gitcredentials

Si el enfoque SSH no se aplica ( por ejemplo , está utilizando un repositorio al que se accede a través de HTTPS), git tiene su propia forma de manejar las credenciales, utilizando gitcredentials(y típicamente git-credential-store). Usted especifica su nombre de usuario usando

git config credential.${remote}.username yourusername

y el ayudante de credenciales usando

git config credential.helper store

(especifique --globalsi desea utilizar esta configuración en todas partes).

Luego, la primera vez que accede a un repositorio, git le pedirá su contraseña y se almacenará (de forma predeterminada ~/.git-credentials). Los accesos posteriores al repositorio utilizarán la contraseña almacenada en lugar de preguntarle.


1
¿Puedes elaborar un poco sobre credential.${remote} y credential.helper. ¿Hay alguna documentación que pueda señalar ya que esta es la primera vez que estoy leyendo al respecto?
— Shirish

Me vinculé a las páginas de manual en mi respuesta, esa es la documentación. ${remote}es la parte de protocolo y nombre de host del URI que desea clonar, helperapunta a un programa auxiliar.
— Stephen Kitt

1
También hay un capítulo de Pro Git sobre el tema.
— Stephen Kitt

7

Para aquellos que encuentren esto más tarde, tuve dificultades con esto y finalmente lo hice funcionar

https / credentials.helper / Ubuntu

  1. Desarmado globalmente:
    git config --global --unset credentials.helper
  2. Desarmar localmente: (en cada repositorio) git config --unset credential.helper
  3. Cree un archivo de credenciales para cada repositorio: (dentro de cada repositorio)

    git config credential.helper 'store --file ~/.git_reponame_credentials'
    

No digo que sea la mejor o la única forma, pero funcionó para mí después de varias horas frustrantes.


parece ser similar a lo que Stephen Kitt compartió anteriormente.
— Shirish

2
@shirish no realmente, el tercer punto era el que necesitaba: opción para especificar dónde se encuentran los archivos.
— Mārtiņš Briedis

@shirish; Además, las instrucciones de Kitts no especifican que no se establezcan las credenciales, lo cual fue un componente crucial para mí ya que ya las había configurado globalmente.
— SteveJ

También tuve dificultades con esto, ya que no es como si todos los repositorios de git. Obtendrá sería de la misma fuente / tienda. El segundo es mejor pero mucho más frustrante para trabajar en la realidad. Aún así, gracias por compartir. @SteveJ
— shirish el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.