2011-01-08 20 views
6

Trabajo con múltiples repositorios remotos de Git y cada uno necesita credenciales de Git diferentes (nombre y correo).¿Cómo administrar múltiples configuraciones de usuario en Git?

¿Existe alguna solución, como un script o mejores prácticas sobre cómo administrarlas?

Sé acerca de "config --local", pero no quiero configurar estas variables cada vez.

+0

Consulte también [¿Puedo especificar varios usuarios para mí en .gitconfig?] (Http: // stackoverflow.com/questions/4220416/can-i-specify-multiple-users-for-myself-in-gitconfig) –

Respuesta

10

Parece que sólo decir git config user.name (o user.email) en un repositorio en particular, sin especificar --global o --system haría el truco. El valor predeterminado es establecer la configuración en el repositorio actual, y debe darle opciones explícitas para que escriba en su configuración de nivel de usuario o de todo el sistema.

No sé cómo se podría hacer esto si usted está recién clonar repositorios que necesitan configuración diferente, sin embargo. ¿Quizás podría escribir un pequeño script que envuelva git clone para clonar algún repositorio y luego establecer la configuración adecuada en función de la información? Si suelta el script en /usr/lib/git-core llamado algo así como git-nclone, puede ejecutarlo como git nclone.

Editar: Ya que no desea configurarlo manualmente cada vez, ¿qué tal un clon envoltorio que recuerda los diversos conjuntos que realmente utiliza, y le permite elegir el adecuado para el repositorio que está clonando. Incluso podría tener valores predeterminados inteligentes según el origen del clon.

+1

cambios en la configuración local aparecen en el archivo .git/config – Abizern

+3

Si tiene una gran cantidad de configuraciones diferentes, Sugeriría dejar su configuración global (~/.gitconfig) sin una configuración de nombre/correo electrónico, de modo que si intenta comprometerse en un repositorio que no se ha configurado, recibirá una advertencia. Si, por otro lado, tiene dos configuraciones principales, establezca la configuración "segura" globalmente y luego anule en repositorios individuales. – Cascabel

+1

Git debería verificar la totalidad de '$ PATH' para archivos ejecutables llamados' git-foo', en realidad, dejándolo caer en '~/bin /' y asegurándose de que esté en su '$ PATH' debería funcionar bien. – fow

0

he creado un par de los alias que tiene este aspecto:

La idea es que puedo guardar mis credenciales (correo electrónico, nombre de usuario) en la definición de alias. Entonces, cuando quiero clonar o inicializar, no tengo que realizar un git config cada vez.

cuando inicialización:

initgithub = !git init && git config user.email [[email protected]] && git config user.name [yourgithubusername] 

initbitbucket = !git init && git config user.email [[email protected]] && git config user.name [yourbitbucketusername] 

cuando se clona:

clonegithub = "!f() { git clone $1 $2; cd $2; git config user.email [[email protected]]; git config user.name [yourgithubusername]; }; f" 

clonebitbucket = "!f() { git clone $1 $2; cd $2; git config user.email [[email protected]]; git config user.name [yourbitbucketusername]; }; f" 

ussage:

cuando inicialización:

git initgithub

git initbitbucket

cuando se clona:

git clonegithub https://github.com/pathtoproject.git/c/temp/SomeFolder/proyecto

git clonebitbucket https://github.com/pathtoproject.git/c/temp/SomeFolder/proyecto

Al clonar, básicamente puede crear una función que ejecutará tanto la operación de clonación normal como las operaciones de configuración. Por ahora, es necesario que proporcione la ruta a la carpeta a la que está clonando para configurar sus credenciales correctamente.

Cuestiones relacionadas