2012-02-19 7 views
61

tengo UNO repositorio en GitHub , vamos a llamarlo Repo-1.Cambiar entre las identidades de usuario en una Git en un ordenador

Quiero acceder primero a ese repositorio como usuario predeterminado de Git.

Llamemos a ese usuario User-1.

creé SSH par de claves, todo está bien , trabaja agradable.


hice OTRO repositorio en GitHub , vamos a llamarlo Repo-2.

I no hizo ningún cambio en Git local, en mi computadora portátil. Sin cambios de configuración, nada.

Ahora - Quiero clon de Repo-1 como el User-2 (pero desde el mismo ordenador portátil).

Antes que nada: ¿es esto posible?

¿Puede Git local en una sola computadora portátil cambiar entre "cuentas de usuario" y presentarse como User-2? Y luego, desde esa identidad, clonar desde Repo-1, hacer algunos cambios, y luego presionar a Repo-1?

Si es posible, ¿cómo puedo hacer eso?

+0

¿Cuándo creó User-2? ¿Tienes dos pares de llaves SSH? –

+0

¡Hola Matthew! Supongo que sí. Me las arreglé para hacer esto, todavía no estoy seguro si esto se hace bien. Fui directamente a ~/.gitconfig (en Windows es C: \ Users \ Martin \ .gitconfig) y cambié estos parámetros: [user] name = USER 2 email = [email protected] [github] user = user2. No cambié el token, lo dejé tal como estaba. Luego agregué el repositorio user1 a Git (con identidad de usuario2). Clonado. Cambió el archivo. En escena, comprometido y empujado. Fui a la página de GitHub Repo1 y ahí estaba: una confirmación de otro usuario. SIN EMBARGO ... ¿tiene sentido este enfoque? – Martin

Respuesta

57

Tiene su .gitconfig global donde ya configuró sus claves SSH/Información del usuario. El .gitconfig global es anulado por un gitconfig local - el archivo "config" en su carpeta .git (si no existe, puede que tenga que crearlo).

Por ejemplo, puede copiar el archivo .gitconfig en la carpeta .git (y cambiarle el nombre a "config") y simplemente cambie las líneas que desea cambiar (probablemente github.user y github.token) o cree una nuevo archivo con solo las dos líneas en él.

Si prefiere la línea de comando "git config" puede evitar que todo el archivo se mueva al omitir la opción "--global".

+2

Bien, gracias. Acabo de probarlo. Dos carpetas (mismo nivel, una por otra, carpeta1 y carpeta2). En la carpeta 1, configuración predeterminada en el archivo de configuración. En la carpeta 2 se cambiaron las configuraciones, incluido el nombre de usuario de GitHub. Iniciado GitBash en la carpeta1, clone -...- push, GitHub ve una confirmación del usuario de defalut. Iniciado GitBash en la carpeta2, clone -...- push, GitHub ve una confirmación de OTHER user. Funciona como un encanto, sin necesidad de alterar la configuración global. Diferentes carpetas, diferentes usuarios. Justo lo que necesitaba. Cool, gracias otra vez! – Martin

+0

IMO, la última oración en esta respuesta es la clave. Porque me parece más limpio dejar que git maneje el flujo de trabajo en lugar de jugar con los archivos usted mismo. Aquí hay una buena guía sobre git config relacionada con este mismo tema: https://help.github.com/articles/setting-your-commit-email-address-in-git/#setting-your-email-address -for-a-single-repository – AndyO

45

Debe determinar si realmente tiene dos pares de claves ssh o solo dos correos electrónicos que desea usar. Un par de claves ssh está vinculado a las cuentas como se describe here.

El par de llaves ssh (específicamente la clave privada), básicamente le da permiso a su cliente de git para conectarse a github, y por lo tanto permiso para presionar. Esto está separado de la identidad del usuario, que es solo el correo electrónico en sus mensajes de confirmación.

Si tiene dos pares de claves ssh, cada una vinculada a una cuenta, siga las instrucciones these para crear un archivo ~/.ssh/config.La parte clave es usar un ssh diferente pseudo-host para cada cuenta:

# Default GitHub user (joe) 
Host github.com 
    HostName github.com 
    User git 
    IdentityFile /Users/joe/.ssh/id_rsa 

# Client user (client) 
Host github-client 
    HostName github.com 
    User git 
    IdentityFile /Users/joe/.ssh/id_rsa_client 

A continuación, utiliza dos mandos correspondientes:

git clone [email protected]:joe/my_repo.git 

y

git clone [email protected]:client/his_repo.git 

Si lo que desea es use dos correos electrónicos, puede dar a cada clon un .git/config por separado con la configuración [user] deseada.

+0

De acuerdo, gracias. Este es un pequeño y agradable tutorial, ¡justo lo que necesitaba! De todos modos, ¿qué pasa con los nombres de usuario de GitHub? Añadí a los archivos .git/config dos nombres de usuario diferentes de GitHub, y ahora GitHub muestra confirmaciones de dos usuarios diferentes. ¿Significa que ya he creado dos pares de claves SSH en los días previos (francamente, no recuerdo porque hice un montón de cosas) ...? Si no lo hubiera hecho, GitHub no habría aceptado confirmaciones del segundo usuario, ¿estoy en lo cierto? – Martin

+0

@Martin, podría tener dos correos electrónicos diferentes que está enviando a github a través de una cuenta. Eso es probablemente lo que sucede si no estás usando dos archivos de identidad. –

+0

Oh, ahora esta última respuesta se trata de acercarse a dos repositorios de GitHub diferentes ... ¿lo entendí bien? Esa no era la pregunta, sin embargo. La pregunta era cómo acceder a un único repositorio de GitHub y presentarse como 2 usuarios diferentes. Como yo y mi amigo, ambos utilizamos la misma computadora portátil y estamos trabajando en el mismo proyecto (el mismo repositorio de GitHub), solo por la mañana lo clono y lo presiono como Martin, y por la noche él clona y empuja como John. La misma computadora local, con una instalación local de Git, pero con dos identidades que se aproximan a un repositorio remoto. – Martin

Cuestiones relacionadas