¿Puedo especificar varios usuarios en .gitconfig?

Resuelto Brock Boland asked hace 14 años • 25 respuestas

En mi ~/.gitconfig, incluyo mi dirección de correo electrónico personal en[user] , ya que eso es lo que quiero usar para los repositorios de Github.

Pero recientemente también comencé a usar git para el trabajo. El repositorio git de mi empresa me permite confirmar, pero cuando envía anuncios de nuevos conjuntos de cambios, dice que son de Anonymous porque no reconoce la dirección de correo electrónico en mi.gitconfig ... al menos, esa es mi teoría.

¿ Es posible especificar múltiples [user]definiciones en .gitconfig? ¿ O hay alguna otra forma de anular el valor predeterminado .gitconfigpara un directorio determinado? En mi caso, reviso todo el código de trabajo ~/worksrc/: ¿hay alguna manera de especificar un .gitconfigsolo para ese directorio (y sus subdirectorios)?

Brock Boland avatar Nov 19 '10 05:11 Brock Boland
Aceptado

Puede configurar un repositorio individual para utilizar un usuario/dirección de correo electrónico específico que anula la configuración global. Desde la raíz del repositorio, ejecute

git config user.name "Your Name Here"
git config user.email [email protected]

mientras que el usuario/correo electrónico predeterminado está configurado en su ~/.gitconfig

git config --global user.name "Your Name Here"
git config --global user.email [email protected]
discomurray avatar Nov 18 '2010 22:11 discomurray

Desde git 2.13 , es posible resolver esto utilizando las inclusiones condicionales recientemente introducidas .

Un ejemplo:

Configuración global ~/.gitconfig

[user]
    name = John Doe
    email = [email protected]

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

Configuración específica del trabajo ~/work/.gitconfig

[user]
    email = [email protected]

Recuerde que [includeIf...]debería seguir el valor predeterminado [user]en la parte superior.

Tomáš Janoušek avatar Apr 27 '2017 09:04 Tomáš Janoušek

O puede agregar la siguiente información en su .git/configarchivo local

[user]  
    name = Your Name
    email = [email protected]
Rahul Prasad avatar Apr 12 '2013 11:04 Rahul Prasad

Cambio de cuentas de github con un comando

Esta solución toma la forma de un único alias de git. Una vez ejecutado, el usuario actual del proyecto se adjuntará a otra cuenta.

Generar claves ssh

ssh-keygen -t rsa -C "[email protected]" -f '/Users/arnaudrinquin/.ssh/id_rsa'

[...]

ssh-keygen -t rsa -C "[email protected]" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'

Vincúlelos a sus cuentas de GitHub/Bitbucket

  1. copiar la clave pública predeterminadapbcopy < ~/.ssh/id_rsa.pub
  2. inicie sesión en su cuenta de GitHub
  3. pega la clave en la add SSH keypágina de github
  4. copiar otra clave públicapbcopy < ~/.ssh/id_rsa_pro.pub
  5. repita y adapte los pasos 2 a 4 para cada otra cuenta

Paso 1. Cambio automático de clave ssh.

Podemos configurar sshpara enviar un uso de una clave de cifrado específica dependiendo del archivo host. Lo bueno es que puedes tener varios alias para el mismo hostname.

Vea este ~/.ssh/configarchivo de ejemplo:

# Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

# Professional github alias
Host github_pro
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_pro

configuración remota de git

Ahora puedes usar estos alias en los controles remotos de git cambiándolos [email protected]por git@github_pro.

Puede cambiar los controles remotos de sus proyectos existentes (usando algo como git remote set-url origin git@github_pro:foo/bar.git) o adaptarlos directamente al clonarlos.

git clone [email protected]:ArnaudRinquin/atom-zentabs.git

usando alias, se convierte en:

git clone git@github_pro:ArnaudRinquin/atom-zentabs.git

Paso 2. Cambiar el correo electrónico de usuario de git

La configuración de Git puede ser global o por proyecto. En nuestro caso, queremos una configuración por proyecto. Es muy fácil cambiarlo:

git config user.email '[email protected]'

Si bien esto es fácil, a los desarrolladores que somos les lleva mucho tiempo. Podemos escribir un alias de git muy simple para eso.

Lo vamos a agregar al ~/.gitconfigarchivo.

[user]
    name = Arnaud Rinquin
    email = [email protected]

...

[alias]
    setpromail = "config user.email '[email protected]'"

Luego, todo lo que tenemos que hacer es git setpromailcambiar nuestro correo electrónico solo para este proyecto.

Paso 3. ¡¿Un cambio de comando, por favor?!

¿No sería bueno cambiar de una cuenta predeterminada a una especificada con un único comando sin parámetros? Esto definitivamente es posible. Este comando tendrá dos pasos:

  • cambiar los controles remotos del proyecto actual a los alias elegidos
  • cambiar la configuración actual del usuario.correo electrónico del proyecto

Ya tenemos una solución de un solo comando para el segundo paso, pero el primero es mucho más difícil. Cambio de host remoto con un comando

Aquí viene la solución en forma de otro comando de alias de git para agregar a su ~/.gitconfig:

[alias]
  changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"

Esto permite cambiar todos los controles remotos de un host a otro (el alias). Vea el ejemplo:

$ > git remote -v
origin  [email protected]:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin  [email protected]:ArnaudRinquin/arnaudrinquin.github.io.git (push)

$ > git changeremotehost github.com github_pro

$ > git remote -v
origin  git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin  git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)

combinarlos todos

Ahora solo nos queda combinar los dos comandos en uno, esto es bastante fácil. Vea cómo también integro la conmutación de host de Bitbucket.

[alias]
  changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
  setpromail = "config user.email '[email protected]'"
  gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"

Enlace fuente-Github

Enlace fuente -Tutorial

Kaleem Ullah avatar Oct 12 '2015 10:10 Kaleem Ullah