¿Cómo presiono a GitHub con un nombre de usuario diferente?


158

Un amigo y yo estamos compartiendo mi computadora. He hecho cambios a GitHub usando el shell git bash en Windows 7. Ahora estamos en un proyecto diferente en esa computadora y necesito que ingrese a su cuenta. Pero sigue intentando usar mi nombre de usuario y dice que no tengo acceso a su repositorio:

$ git push her_github_repository our_branch
ERROR: Permission to her_username/repository.git denied to my_username.
fatal: The remote end hung up unexpectedly

¿Esto ayuda help.github.com/articles/setting-your-email-in-git (use git config --global user.name her_username) antes de presionar?
Prinzhorn

Veo que cambiaste a URL de HTTPS, por lo que github siempre solicita credenciales. Solo recuerde que las confirmaciones se seguirán registrando como lo hizo el usuario en git config user.name y git config user.email, independientemente de quién haga el envío. PD: No creo que haya una historia de quién empujó qué.
Jorge Orpinel

29
git config --local credential.helper ""puede hacer el truco.
SOFe

No pude seguir ninguna de las soluciones dadas aquí en mi sistema de Windows. Los pasos dados en esta respuesta funcionaron finalmente stackoverflow.com/a/15382950/351903
Sandeepan Nath

@SOFe eso es lo que estaba buscando! ¿Este comando borra efectivamente algunas credenciales almacenadas en caché?
CCJ

Respuestas:


94

Si utiliza un usuario de Windows diferente, su clave SSH y la configuración de git serán independientes.

Si esta no es una opción para usted, entonces su amiga debe agregar su clave SSH a su cuenta de Github.

Aunque, la solución anterior te mantendrá presionando como a ti mismo, pero te permitirá presionar en su repositorio. Si no desea esto y trabaja en una carpeta diferente en la misma PC, puede configurar el nombre de usuario y el correo electrónico localmente dentro de una carpeta con git eliminando la -gbandera del comando config:

git config user.name her_username
git config user.email her_email

Alternativamente, si presiona el httpsprotocolo, Github le solicitará un nombre de usuario / contraseña cada vez (a menos que use un administrador de contraseñas).


66
Hasta donde recuerdo, las claves SSH tienen que ser únicas en Github, no puede tener la misma clave adjunta a varias cuentas
Gareth el

@Gareth Quizás, pero puede configurar múltiples claves SSH para el mismo usuario en Windows (y en todas partes que conozco).
Simon Boudrias

no puedo tener dos llaves, mira mi respuesta a continuación.
chovy

1
Para todos los proyectos:git config --global user.name "Mona Lisa"
w3spi

237

Esto funcionó para mí, solicitará nombre de usuario y contraseña

git config --local credential.helper ""
git push origin master

1
Gracias, funcionó para mí, utilicé Bitbucket y configuré mi nombre de usuario, pero esto resolvió la migración a aws code-commit
Alejandro Ruiz

Me había helper = cache --timeout=999999puesto en mi .gitignorey esto funcionó. ¿Pero alguna forma de restablecer eso sin cambiar una configuración local me pregunto?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

¡Esto es increíble!
hargun3045

¡¡¡Esto es lo que estaba buscando!!!
aagjalpankaj

1
Explica mejor lo que hace aquí: configura tu repositorio local para ignorar la configuración (probablemente global) credential.helper, por ejemplo, el almacén de credenciales de Windows. Esto también significa que solicita un nombre de usuario / contraseña cada vez que lo necesita, ya que no hay nada configurado, por lo que tal vez también pueda configurar el credential.helpercaché (consulte la respuesta de @Ciro Santilli) o use una respuesta diferente aquí.
Rugk

53

Puede presionar con el uso de una cuenta diferente. Por ejemplo, si su cuenta es A, que está almacenada en .gitconfig y desea usar la cuenta B, que es el propietario del repositorio que desea enviar.

Cuenta B : B_user_name, B_password
Ejemplo de enlace SSH: https://github.com/B_user_name/project.git

El impulso con la cuenta B es:

$ git push https://'B_user_name':'B_password'@github.com/B_user_name/project.git

Para ver la cuenta en .gitconfig

  1. $git config --global --list
  2. $git config --global -e (para cambiar la cuenta también)

Wow esta es la respuesta !! He configurado user.name, user.emailen la configuración local, he clonado con el nombre de usuario, y no funciona; ahora la última respuesta funciona sin tocar el llavero / lo que sea ... en Git 2.9.0 in Windows. "por fin pero no menos importante" ... así se llama. Gracias. Esta respuesta merece más votos positivos.
WesternGun

3
El único efecto secundario es que su contraseña / nombre de usuario se registra en el historial de bash ... Pero funciona para mí.
WesternGun

Gracias por esto, esto es exactamente lo que quería hacer. Sin embargo, esto empuja a dominar. ¿Cómo empujaría a una rama además del maestro?
Steven Anderson el

2
@WesternGun No proporcione contraseña en la URL si desea evitar que se registre en el historial de bash. Uso https://'B_user_name'@github.com/B_user_name/project.git. Esto debería solicitar la contraseña de B_user_name.
subtleseeker

24

Configuré un alias ssh usando un personalizado IdentityFiley reescribí el origen para usar mi me-githubnombre de host personalizado .

#when prompted enter `id_rsa_user1` as filename
ssh-keygen -t rsa

# ~/.ssh/config
Host user1-github
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/id_rsa_user1

#check original remote origin url
git remote -v
origin git@github.com:user1/my-repo.git

#change it to use your custom `user1-github` hostname
git remote rm origin
git remote add origin git@user1-github:user1/my-repo.git

55
En lugar de eliminar y luego agregar, podemos cambiar la URL remota por: git remote set-url origin git@user1-github:user1/my-repo.git 😊
Ninh Pham

18

Si usa una URL SSH ( git@github.com:username/projectname.git) en lugar de una URL HTTPS, puede especificar temporalmente una clave SSH diferente utilizando la $GIT_SSH_COMMANDvariable de entorno:

$ GIT_SSH_COMMAND="ssh -i different_private_key" git push

Hasta donde puedo decir, con las URL SSH, a GitHub no le importan los nombres de usuario, solo las claves: si una cuenta de usuario tiene acceso a un repositorio y esa cuenta tiene una clave SSH (consulte la página de claves SSH en la cuenta configuración), luego, si usa esa clave SSH para enviar a ese repositorio, la inserción se tratará como si viniera de ese usuario.


1
esto no funcionó para mí, de manera interesante, el cambio de la user.namey user.emailen git configcambiará la cuenta de que una confirmación se relaciona con
Kevin Zhao

Funcionó para mi. Solo un pequeño comentario para aclarar la respuesta. "different_private_key" es un archivo en el hostA que contiene la clave privada del usuarioB en nombre del cual queremos realizar "git push" en el hostA que es el usuarioA. Debe crear este archivo en el hostA (por ejemplo, como ~ / .ssh / id_rsa_userB) y colocar allí el contenido del archivo ~ / .ssh / id_rsa desde el hostB donde existe el usuario B. Incluso no importa si el usuarioB existe o no existe en el hostA.
Alexander Samoylov el

15

Si después de ejecutar git pushGit solicita una contraseña de user, pero desea presionar como new_user, puede usar git config remote.origin.url:

$ git push
user@my.host.com:either/branch/or/path's password:

En este punto, use ^Cpara salir git pushy use el siguiente para presionar como new_user.

$ git config remote.origin.url
user@my.host.com:either/branch/or/path

$ git config remote.origin.url new_user@my.host.com:either/branch/or/path

$ git push
new_user@my.host.com:either/branch/or/path's password:

Hola, probé esta solución para empujar al alijo atlassian. Aparece el error "<URL> / info / refs no encontrado: ¿ejecutó git update-server-info en el servidor?" No creo que pueda ejecutar comandos en Stash. ¿Tienes una idea de cómo resolver esto? ¡Gracias!
Zsolt Szilagyi

Para GitHub, esto se vería así:git config remote.origin.url https://different_user@github.com/different_user/repo.git
NumesSanguis

13

Es simple durante la clonación, tome la URL de git con su nombre de usuario. Mientras se compromete le pedirá su nueva contraseña de usuario.

P.ej:

git clone https: //username@github.com/username/reponame.git

git clone https: //username@bitbucket.org/username/reponame.git


44
Esta respuesta debería tener más votos positivos al menos. Si no haces lo que dice @Krishna Kavoor, siempre tendrás el problema, porque aunque globalmente tienes nombre de usuario1 y localmente tienes nombre de usuario2, git intentará usar el nombre global.
Markon

No funciona. Lo utilicé y digo: fatal: repo not found.
WesternGun

1
Funciona siempre ya que tengo 3 proyectos diferentes de 3 clientes diferentes. Funciona como un milagro. Comprueba que tu ruta de repositorio sea correcta.
Krishnamoorthy Acharya

8

si este es tu problema

remote: Permission to username1/repo.git denied to username2.
fatal: unable to access 'https://github.com/username1/repo.git/':
The requested URL returned error: 403

Además de cambiar el nombre de usuario y el correo electrónico desde la terminal usando git config:

$ git config --global user.name "Bob"
$ git config --global user.email "bob@example.com"

deberás eliminar la información de autorización de Keychain. Esta solución me tomó varias horas para darme cuenta. Descubrí que también tenía un certificado en mi Llavero.

Abra el acceso a Llavero, haga clic en Todos los artículos y busque git. Eliminar todo el llavero


¿Cuál es la contraparte de Windows 7 para Keychain?
Thomas Eyde

No estoy seguro, pero lo descubriré
Muyide Ibukun

Supongo que estoy atrapado aquí también. ¿Te diste cuenta?
Sandeepan Nath

No, eventualmente no lo descubrí, pero supongo que no debería ser tan difícil
Muyide Ibukun

1
gracias por la sugerencia sobre la eliminación de información de autorización del llavero
Luja Shrestha

7

He estado usando una máquina para insertar código en dos cuentas de GitHub diferentes con un nombre de usuario diferente. Suponiendo que ya configuró una cuenta y desea agregar una nueva:

  1. Generar nueva clave SSH ssh-keygen -t rsa -C "myaddress@example.com"
  2. Guárdelo, pero recuerde no anular el existente id_rsa. Dale un nombre diferente, por ejemploid_rsa_another
  3. Copie el contenido de la clave a su cuenta de GitHub:

Configuración -> SSH y claves GPG -> Nueva clave SSH -> Dar una etiqueta y pegar la clave -> Agregar clave SSH

  1. Agregue la clave al agente ssh: ssh-add ~/.ssh/id_rsa_another
  2. Configure un host GitHub: cree un archivo de configuración touch ~/.ssh/configy edítelo proporcionando configuraciones a sus cuentas:
#first account
Host github.com-first
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

#another account
Host github.com-another
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_another

Ahora debería poder enviar desde diferentes cuentas dependiendo de la clave que agregue al agente ssh, es decir, para usar su primera cuenta ssh-add ~/.ssh/id_rsa.

También es posible que desee cambiar su correo electrónico de usuario:

git config --global user.email "myaddress@example.com"

o limpie las claves ssh en caso de error de permiso al poner el código en una de las cuentas:

ssh-add -D


1
Sí, ya configuré como varias cuentas. Pero, ¿cómo puedo presionar con la primera cuenta. ¿Puedes por favor compartir el comando?
Codemicky

¿Qué quieres decir con "cómo puedo empujar"? No git pushfunciona Debería poder presionar después de agregar su clave
Tomasz Bartkowiak

Debe configurar el usuario para cada proyecto de repositorio $ git config user.email
jasmintmp

6

Vaya al Administrador de credenciales Vaya a Credenciales de Windows Elimine las entradas en Credenciales genéricas Intente conectarse nuevamente.


Gracias. El camino es Control Panel\All Control Panel Items\Credential Manager-> Windows Credentials.
Saheed

4

Como se mencionó anteriormente, puede usar

git config user.name her_username
git config user.email her_email

para configurar manualmente el nombre de usuario y el correo electrónico para un repositorio único, pero debe agregar este comando:

git commit --amend --reset-author

si ya ha intentado presionar antes del cambio. De lo contrario, los cambios no aparecen en el archivo de configuración.


Esto no es verdad. El --reset-author(con --...) colocará el último nombre / correo electrónico configurado en la última confirmación, y también la última marca de tiempo. No afecta los cambios en el archivo de configuración.
Ramon Snir

3

Puede agregar una nueva URL remota para el otro nombre de usuario usando git remote add origin-username https://username@github.expedia.biz/repository_name.git

Después de esto, si presionas el uso git push -u origin-username master, te pedirá la contraseña.


2

git config user.name solo cambia el nombre que confirmo. Todavía no puedo empujar. Así es como lo resolví, y creo que es una manera fácil para mí.

  1. Genere una clave SSH con el nombre de usuario que desea insertar en la computadora que usará https://help.github.com/articles/connecting-to-github-with-ssh/

  2. Agregue esta clave a la cuenta de usuario de github que desea enviar a https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

  3. Elija clonar con SSH

Puede ingresar como este usuario a ese repositorio ahora.


2

Si en Windows y el usuario Git para Windows y managerpara administrar las credenciales (también conocido como Git-Credential-Manager-for-Windows Enlace ), el problema es que no hay una manera fácil de cambiar entre los usuarios al presionar a GitHub sobre el httpsuso de OAuthtokens.

La razón es que el token se almacena como:

  • Dirección de Internet: git:https://github.com
  • Nombre de usuario Personal Access Token
  • Contraseña: OAuth_Token

Las variaciones de la URL Internet Addressno funcionan, por ejemplo:

  • git:https://username@github.com
  • git:https://github.com/username
  • ...

La solución: espacios de nombres . Esto se encuentra en los detalles para la configuración de Git-Credential-Manager-for-Windows:

Citando de ello:

espacio de nombres

Establece el espacio de nombres para las credenciales almacenadas.

De manera predeterminada, el GCM utiliza el espacio de nombres 'git' para todas las credenciales almacenadas, establecer este valor de configuración permite el control del espacio de nombres utilizado globalmente o por host.

git config --global credential.namespace name

Ahora, guarde su credencial en el Administrador de credenciales de Windows como:

  • Dirección de Internet: git.username:https://github.com
  • Nombre de usuario Personal Access Token
  • Contraseña: OAuth_Token

Tenga en cuenta que hemos cambiado: git-> git.username(donde cambia usernamea su nombre de usuario real o por el bien, a lo que desee como identificador único)

Ahora, dentro del repositorio donde desea usar la entrada específica, ejecute:

git config credential.namespace git.username

(De nuevo ... reemplace usernamecon el valor deseado)

Tu .git/configcontendrá ahora:

[credential]
    namespace = git.username

Et voilá! La credencial correcta se extraerá del Almacén de credenciales de Windows.

Esto, por supuesto, no cambia qué usuario / correo electrónico está presionando. Para eso tienes que configurar lo habitual user.nameyuser.email


Gracias. Esto funcionó mejor para mí (Windows 10). Sin eliminación temporal de otras cuentas de usuario de git en Windows Credentials, sin "hacks". Tengo un usuario git global / host para todos los repositorios. Excepto que solo uno de ellos requiere credenciales diferentes. Si eso también se ajusta a su entorno, simplemente deje todo como está en las credenciales de Windows, vaya a su repositorio "especial" y escriba git config credential.namespace git.usernamecomo se menciona (reemplazando el nombre de usuario). Si presiona la próxima vez, git le pedirá las nuevas credenciales para el nombre de usuario.
Ford04

2

No pude descubrir cómo tener una segunda identidad de github en una sola máquina (ninguna de estas respuestas me funcionó para eso), pero sí descubrí cómo poder empujar a varias cuentas de github diferentes como yo.

Presione como el mismo nombre de usuario, pero a diferentes cuentas de github

  1. Configure una segunda clave SSH ( así ) para su segunda cuenta de github

  2. Cambiar entre cuentas así:

Empuje con mi nueva segunda cuenta de github

ssh-add -D
ssh-add ~/.ssh/ssh_key_for_my_2nd_account
git push

Empujar con mi cuenta principal

ssh-add -D
ssh-add ~/.ssh/id_rsa   
git push


1

Siga los siguientes pasos:

  1. ¡Debes entender eso, debes definir el autor antes de comprometerte! los commits ya están congelados: tienen el nombre establecido para su autor y committer, y no se pueden cambiar.
# you can check what's currently:
git config user.name
git config user.email

git config user.name "your_github_username"
git config user.email "your_github_email"

# Again check what's currently:
git config user.name
git config user.email
  1. ¿Verifica a quién está etiquetado tu commit?
git log
# once you're confirmed that it's tagged to you, then you should move to step 3

En caso de que el autor esté equivocado, puede deshacer fácilmente la última confirmación sin perder los cambios.

Además, antes de pasar al paso 3, ¡no olvide seguir el paso uno para verificar la cordura!

  1. date un aviso para ingresar github_username y github_password
git config --local credential.helper ""
git push
# it will ask you to enter your github_username and github_password

0

El ID de usuario donde ocurre la confirmación se almacena en el archivo de configuración.

ir a la parte superior del repositorio vi .git / config

cambie la línea de URL que aparece después de "[origen" remoto "] para tener el ID de usuario apropiado


0

Si usas ssh y obtienes

Permiso para some_username / repository.git denegado a Alice_username

Si bien no desea presionar como Alice_username, asegúrese de que Alice_username no tenga la clave ssh de su computadora agregada a su cuenta de github.

Eliminé mi clave ssh de la cuenta github de alice y el empuje funcionó.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.