¿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.
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
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.
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