Establecer credenciales de git según la carpeta

4 minutos de lectura

¿Es posible que una carpeta que contenga varios repositorios use un conjunto de credenciales y que otra carpeta use una cuenta diferente? Por ejemplo, me gustaría tener una carpeta en mi mac para repositorios de trabajo y una carpeta para personal y que el nombre de usuario y la contraseña de git cambien automáticamente según la carpeta en la que me encuentre.

  • No creo que eso sea posible para git fuera de la caja, pero es posible establecer el valor predeterminado para cada repositorio.

    – Bagús Tesa

    31 de mayo de 2018 a las 7:38


  • Puede establecer credenciales para cada proyecto individual en el .git/config archivo, si eso ayuda.

    – primero-2cv

    31 de mayo de 2018 a las 7:40


  • ¿Posible duplicado de múltiples cuentas de github en la misma computadora?

    – Doctor

    31 de mayo de 2018 a las 8:27

Avatar de usuario de Vikas Yadav
vikas yadav

Configurar git config para carpetas específicas es demasiado fácil. Puede lograrlo usando solo dos comandos de git. Simplemente ingrese el directorio para el que desea que se cambie la información de la cuenta de git y haga esto:

git config --local user.email "yourmail@example.com"

git config --local user.name "yourName"

Creo que esto ayudará.

¡Salud!

  • Eso no son credenciales.

    – Lasse V. Karlsen

    31 de mayo de 2018 a las 9:57

Puedo estar equivocado, pero solo creo diferentes archivos de configuración de git y defino las condiciones en el archivo global ~/.gitconfig. Se parece a esto:

[includeIf “gitdir:<path_to_organisation1_directory_with_repos>“]
    path = <path_to_organisation1_special_git_config_file>

[includeIf “gitdir:<path_to_organisation2_directory_with_repos>“]
    path = <path_to_organisation2_special_git_config_file>

Después de mucho buscar, encontré lo que estaba buscando (pero tal vez no exactamente lo que pedí inicialmente). La solución que elegí fue usar ssh. Github tiene buenos documentos de ayuda para seguir aquí (bajo autenticación) pero básicamente tienes que 1. Generar una clave ssh para cada cuenta y agréguela al agente ssh* 2. Agregar la clave ssh para sus cuentas de github 3. En una Mac, actualice el archivo de configuración en ~/.ssh/config (desplácese hacia abajo hasta “elegir entre varias cuentas en GitHub o Heroku”)

  • Nota: La adición de claves ssh al agente ssh es transitoria. Solo duran mientras el agente se está ejecutando. Si lo mata o reinicia su computadora, se perderán hasta que los vuelva a agregar.

Para solucionar esto, creé una función bash, la agregué a los archivos bash rc para todos los shells para que pueda llamarla como un comando de terminal. El código está aquí:

#!/bin/bash

function addSshKeysToAgent() {
  echo "starting ssh agent:"
  echo ""

  eval 'ssh-agent -s'
  echo ""

  echo "adding identities: "
  ssh-add -K ~/.ssh/personal_rsa
  ssh-add -K ~/.ssh/work_rsa
  echo ""

  echo "Private keys loaded into SSH: "
  ssh-add -l -E md5
  echo ""

  echo "ssh keys added to ssh agent."
}

function clone() {
  addSshKeysToAgent
  git clone gh-work:Company/$1
}

Reemplace personal_rsa y work_rsa con el nombre de su archivo de clave ssh y Company con el nombre de su organización (si eso es lo que quiere hacer), que proviene del archivo de configuración que actualizó. Así es como se ve mi archivo de configuración:

Host *
 Port 22
 ServerAliveInterval 60
 ForwardAgent yes
 UseKeychain yes
 AddKeysToAgent yes
 IdentityFile ~/.ssh/personal_rsa
 IdentityFile ~/.ssh/work_rsa

Host gh-personal
  Hostname github.com
  User git
  IdentityFile ~/.ssh/personal_rsa
  AddKeysToAgent yes
  UseKeychain yes

Host gh-work
  Hostname github.com
  User git
  IdentityFile ~/.ssh/work_rsa
  AddKeysToAgent yes    
  UseKeychain yes

con todo esto, debería poder clonar un repositorio desde la terminal con el siguiente comando:

clone reponame.git

Espero sinceramente que esto ayude a alguien. Me tomó casi un día completo de búsqueda y pirateo de cosas para que esto funcionara y mientras escribía esta respuesta, encontré una idea realmente genial para hacer exactamente lo que quería. aquí

  • No es necesario tener claves ssh separadas para cada cuenta. Debe tener claves ssh separadas para cada dispositivo y registrar la clave pública de cada dispositivo en cada cuenta que la necesite. Sin embargo, para obtener el correo electrónico y el nombre de usuario correctos para las confirmaciones, una de las otras respuestas aquí funcionará (la de Daria es excelente para aplicar la misma configuración a todos los repositorios en una carpeta determinada).

    – LightCC

    14 de septiembre a las 18:27

Avatar de usuario de Mattia Righetti
mattia righetti

Este La guía es probablemente la que estás buscando.

Echa un vistazo a la git config --local parte específicamente cuál es la que va a aplicar los cambios en el repositorio en el que está ejecutando el comando.

¿Ha sido útil esta solución?