2011-05-24 15 views
90

Utilizo mi computadora portátil personal para proyectos personales y de trabajo y me gustaría utilizar la dirección de correo electrónico de trabajo para mis compromisos en el trabajo (gitolite) y mi dirección de correo electrónico personal para el resto (github).¿Cómo decirle a git que use la identidad correcta (nombre y correo electrónico) para un proyecto determinado?

leí acerca de las siguientes soluciones que son todos, ya sea global o temporal:

Una solución es ejecutar manualmente una función de shell que configura mi entorno como trabajo o personal, pero estoy bastante seguro de que a menudo me olvidaré de cambiar a la identidad correcta, lo que da como resultado la identificación incorrecta.

¿Hay alguna forma de vincular un determinado repositorio, nombre de proyecto, etc. a una identidad (nombre, correo electrónico)? ¿Que hace la gente?

+1

Le pido que acepte una de las respuestas. Espero que uno de ellos te haya ayudado a resolver tu problema. – RBT

Respuesta

105

git config user.email "[email protected]"

Hacer que una dentro de un acuerdo de recompra establecerá la configuración en ese repo, y no globalmente.

Parece que eso es más o menos lo que buscas, a menos que te esté malinterpretando.

+0

Supongo que debería hacerlo. Espero tener múltiples repositorios locales para el mismo proyecto, especialmente para cambiar de rama más fácilmente sin tener que recompilar todo. Tal vez es solo un mal hábito svn. Gracias. –

+1

@ Martin - No he usado git en tiempo real, pero el sentido que tengo es que usar múltiples repos locales sería un flujo de trabajo inusual para git. Aun así, solo necesitaría ejecutar esto una vez en una instancia del repositorio, y está configurado para la vida útil de ese repositorio, por lo que no es tan malo. –

+0

@DanRay De hecho, es una configuración común si, como en el caso de Martin, el repositorio local tiene archivos locales no confirmados. Cambiar de una rama a otra no reconstruiría automáticamente los archivos. Si evitar una "recompilación de todo" es un objetivo, usar múltiples repos locales es la forma correcta de hacerlo. – dolmen

16

Si utiliza git config user.email "[email protected]" quedará vinculado al proyecto actual que se encuentra.

Eso es lo que hago para mis proyectos. Establecí la identidad apropiada cuando clono/inicio el repositorio. No es a prueba de tontos (si olvida y empuja antes de darse cuenta de que tiene una manguera) pero es lo mejor que puede obtener sin la capacidad de decir git config --global user.email 'ILLEGAL_VALUE'

En realidad, puede hacer un valor ilegal. Establezca su git config --global user.name $(perl -e 'print "x"x968;')

Luego, si olvida establecer sus valores no globales, recibirá un mensaje de error.

[EDIT] En un sistema diferente, tuve que aumentar el número de x a 968 para que fallara con "fatal: identificador personal increíblemente largo". La misma versión de git. Extraño.

+0

Suena como un gran truco, pero no funcionó para mí. Ambos commit y push para gitolite remote tuvieron éxito. –

+0

@Martin Jambon: Extraño. Estoy usando la versión de Git 1.7.4.5 –

+0

@Martin Jambon: también puede intentar configurar su nombre de usuario/dirección de correo electrónico global en "x". Algunas versiones anteriores de git rechazaron valores demasiado pequeños. Informe qué git version/os tiene si esto no funciona. –

7

Si no usa el parámetro --global, establecerá las variables para el proyecto actual solamente.

20

Editar el archivo de configuración en la carpeta con ".git" para mantener el otro nombre de usuario y correo electrónico depende del repositorio

  • Goto Su reposotory
  • muestran los archivos ocultos y Goto".Git" carpeta
  • encontrar el "archivo de configuración"
  • Añadir las siguientes líneas en el EOF

[usuario]

name = Bob

email = [email protected]

Este siguiente comando muestra qué nombre de usuario y correo electrónico estableció para este repos itory.

git config --get user.name

git config --get user.email

Ejemplo: para la mina que el archivo de configuración en D: \ workspace \ eclipse \ ipchat \. git config \

Aquí ipchat es mi nombre de recompra

21

es necesario utilizar el comando de ajuste locala continuación:

conjunto local de

git config user.email [email protected] 
git config user.name 'Mahmoud Zalt' 

locales obtener

git config --get user.email 
git config --get user.name 

El archivo de configuración local se encuentra en el directorio del proyecto: .git/config.

conjunto global

git config --global user.email [email protected] 
git config --global user.name 'Mahmoud Zalt' 

Global Recibe

git config --global --get user.email 
git config --global --get user.name 

El archivo de configuración global en en su directorio personal: ~/.gitconfig.

Recuerde citar espacios en blanco, etc., por ejemplo: 'Nombre Apellido'

1

A partir de Git 2.13 se puede utilizar un includeIf en su gitconfig para incluir un archivo con una configuración diferente en función de la ruta del repositorio donde estás ejecutando tus comandos git.

Una vez que lo haga funcionar yo mismo lo actualizaré con un mejor ejemplo.

https://motowilliams.com/conditional-includes-for-git-config#disqus_thread

Para usar Git 2.13 usted necesitará añadir un PPA (Ubuntu/Debian) o descargar los binarios e instalar (Windows/Linux otra).

Cuestiones relacionadas