Uso mi computadora portátil personal tanto para el trabajo como para proyectos personales y me gustaría usar mi dirección de correo electrónico del trabajo para mis confirmaciones en el trabajo (gitolite) y mi dirección de correo electrónico personal para el resto (github).
Leí sobre las siguientes soluciones, que son todas globales o temporales:
git config --global user.email "[email protected]"
git config user.email "[email protected]"
git commit --author "Bob <[email protected]>"
- el establecimiento de uno de los
GIT_AUTHOR_EMAIL
,GIT_COMMITTER_EMAIL
oEMAIL
variables de entorno
Una solución es ejecutar manualmente una función de shell que establezca mi entorno en trabajo o personal , pero estoy bastante seguro de que a menudo me olvido de cambiar a la identidad correcta, lo que resulta en comprometerme con la identidad incorrecta.
¿Existe alguna forma de vincular un determinado repositorio, nombre de proyecto, etc. a una identidad (nombre, correo electrónico)? ¿Que hace la gente?
fuente
Respuestas:
git config user.email "[email protected]"
Hacer eso dentro de un repositorio establecerá la configuración en ESE repositorio, y no globalmente.
Parece que eso es más o menos lo que buscas, a menos que te esté malinterpretando.
fuente
Debe usar el comando de configuración local a continuación:
conjunto local
obtener local
El archivo de configuración local se encuentra en el directorio del proyecto:
.git/config
.conjunto global
obtener global
El archivo de configuración global en en su directorio:
~/.gitconfig
.Recuerde citar espacios en blanco, etc., por ejemplo: 'Nombre Apellido'
fuente
Edite el archivo de configuración en la carpeta ".git" para mantener el nombre de usuario y el correo electrónico diferentes según el repositorio
El siguiente comando le muestra qué nombre de usuario y correo electrónico configurado para este repositorio.
Ejemplo: para el mío ese archivo de configuración en D: \ workspace \ eclipse \ ipchat \ .git \ config
Aquí ipchat es mi nombre de repositorio
fuente
Si lo usa
git config user.email "[email protected]"
, estará vinculado al proyecto actual en el que se encuentra.Eso es lo que hago por mis proyectos. Establezco la identidad apropiada cuando clono / inicio el repositorio. No es infalible (si te olvidas y presionas antes de darte cuenta, estás manchado) pero es tan bueno como puedes obtener sin la capacidad de decir
git config --global user.email 'ILLEGAL_VALUE'
De hecho, puedes hacer un valor ilegal. Establecer su
git config --global user.name $(perl -e 'print "x"x968;')
Luego, si olvida establecer sus valores no globales, recibirá un mensaje de error.
[EDITAR] En un sistema diferente tuve que aumentar el número de x a 968 para que fallara con "fatal: identificador personal imposiblemente largo". Misma versión de git. Extraño.
fuente
Si no usa el
--global
parámetro, establecerá las variables solo para el proyecto actual.fuente
A partir de Git 2.13, puede usar un
includeIf
en su gitconfig para incluir un archivo con una configuración diferente según la ruta del repositorio donde está ejecutando sus comandos git.Dado que un Git lo suficientemente nuevo viene con Ubuntu 18.04, he estado usando esto en mi versión
~/.gitconfig
bastante feliz.https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Para usar Git 2.13, deberá agregar un PPA (Ubuntu anterior a 18.04 / Debian) o descargar los binarios e instalarlos (Windows / otro Linux).
fuente
git config core.sshCommand
múltiples claves privadas, brinda una administración de identidad git completa y sin problemas.Ese era exactamente mi problema. He escrito un script de gancho que le advierte si tiene algún control remoto de github y no ha definido un nombre de usuario local.
Así es como lo configura:
Cree un directorio para contener el gancho global
mkdir -p ~/.git-templates/hooks
Dile a git que copie todo en
~/.git-templates
tu.git
directorio por proyecto cuando ejecutes git init o clonegit config --global init.templatedir '~/.git-templates'
Y ahora copie las siguientes líneas ay
~/.git-templates/hooks/pre-commit
haga que el archivo sea ejecutable (¡no olvide esto, de lo contrario, git no lo ejecutará!)Si utiliza otros hosts para sus repositorios privados, debe reemplazarlos
github.com
según sus necesidades.Ahora, cada vez que hagas a
git init
ogit clone
git copiará este script en el repositorio y lo ejecutará antes de que se realice cualquier confirmación. Si no ha establecido un nombre de usuario local, generará una advertencia y no le permitirá comprometerse.fuente
Me gusta mucho la forma de Micah Henning en su artículo (ver Configuración de identidades de Git ) sobre este tema. El hecho de que aplique y fuerce la identidad a cada repositorio creado / clonado es una buena forma de no olvidar configurar esto cada vez.
Configuración básica de git
Anule la configuración del usuario actual en git:
Forzar la configuración de identidad en cada nuevo repositorio local:
Cree un alias de Git para el
identity
comando, lo usaremos más adelante:Creación de identidades
Cree una identidad con GPG (use
gpg
ogpg2
dependiendo de lo que tenga en su sistema). Repita los siguientes pasos para cada identidad que desee utilizar.Copie el bloque de clave pública y agréguelo a su configuración de GitHub / GitProviderOfChoice como una clave GPG.
Agregue identidad a la configuración de Git. También repita esto para cada identidad que desee agregar:
Configurar identidad para un repositorio
Si un nuevo repositorio no tiene una identidad asociada, aparecerá un error en la confirmación, recordándole que lo configure.
Especifique la identidad que desea en un nuevo repositorio:
Ahora está listo para comprometerse con la identidad de gitlab .
fuente