web-dev-qa-db-fra.com

Comment puis-je pousser vers GitHub sous un nom d'utilisateur différent?

Un ami et moi partageons mon ordinateur. J'ai fait des push sur GitHub en utilisant le shell git bash sous Windows 7. Maintenant, nous sommes dans un projet différent sur cet ordinateur et j'ai besoin d'elle pour Push vers son compte. Mais il continue d'essayer d'utiliser mon nom d'utilisateur et de dire que je n'ai pas accès à son référentiel:

$ 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
75
at.

Si vous utilisez un utilisateur Windows différent, votre clé SSH et vos paramètres git seront indépendants.

Si ce n'est pas une option pour vous, votre ami devrait alors ajouter votre clé SSH à son compte Github.

Bien que la solution précédente vous permette de continuer à pousser comme vous-même, mais elle vous permettra de pousser dans son dépôt. Si vous ne le souhaitez pas et que vous travaillez dans un dossier différent sur le même ordinateur, vous pouvez configurer le nom d'utilisateur et l'e-mail localement dans un dossier avec git en supprimant -g l'indicateur de la commande config:

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

Sinon, si vous utilisez le protocole https Push, Github vous demandera de saisir un nom d'utilisateur/mot de passe à chaque fois (sauf si vous utilisez un gestionnaire de mot de passe).

60
Simon Boudrias

Cela a fonctionné pour moi, il va demander le nom d'utilisateur et mot de passe

git config --local credential.helper ""
git Push Origin master
85
s-hunter

J'ai configuré un alias ssh en utilisant une IdentityFile personnalisée et réécrit l'Origine pour qu'elle utilise mon nom d'hôte me-github personnalisé.

#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 [email protected]: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
17
chovy

Vous pouvez pousser avec en utilisant un compte différent. Par exemple, si votre compte est A qui est stocké dans .gitconfig et que vous souhaitez utiliser le compte B qui est le propriétaire du référentiel que vous souhaitez envoyer.

Compte B: nom_utilisateur_B, mot_passe_B
Exemple de lien SSH: https://github.com/B_user_name/project.git

Le compte Push avec B est:

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

Pour voir le compte dans .gitconfig

  1. $git config --global --list
  2. $git config --global -e (pour changer de compte également)
16
thotruong

Si, après l'exécution de git Push, Git vous demande un mot de passe de user, mais que vous souhaitez utiliser l'option Push en tant que new_user, vous pouvez utiliser git config remote.Origin.url:

$ git Push
[email protected]:either/branch/or/path's password:

À ce stade, utilisez ^C pour quitter git Push et utilisez les options suivantes pour pousser en tant que new_user.

$ git config remote.Origin.url
[email protected]:either/branch/or/path

$ git config remote.Origin.url [email protected]:either/branch/or/path

$ git Push
[email protected]:either/branch/or/path's password:
13
Lukasz Czerwinski

Si vous utilisez une URL SSH ([email protected]:username/projectname.git) plutôt qu'une URL HTTPS, vous pouvez spécifier temporairement une clé SSH différente à l'aide de la variable d'environnement $GIT_SSH_COMMAND:

$ GIT_SSH_COMMAND="ssh -i different_private_key" git Push

Autant que je sache, avec les URL SSH, GitHub ne s’intéresse pas aux noms d’utilisateur, mais uniquement aux clés: si un compte utilisateur a accès à un référentiel et que ce compte a une clé SSH (voir la page Clés SSH dans les paramètres du compte), si vous utilisez cette clé SSH pour envoyer à ce référentiel, le Push sera traité comme provenant de cet utilisateur.

10
David Moles

C'est simple lors du clonage, veuillez prendre l'URL git avec votre nom d'utilisateur. Tout en le validant, il vous demandera votre nouveau mot de passe.

Par exemple: 

git clone https: //[email protected]/username/reponame.git

git clone https: //[email protected]/username/reponame.git

6

si c'est ton problème

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

En plus de changer le nom d'utilisateur et le courrier électronique du terminal à l'aide de git config:

$ git config --global user.name "Bob"
$ git config --global user.email "[email protected]"

vous devrez supprimer les informations d'autorisation du trousseau. Cette solution m'a pris plusieurs heures à comprendre. J'ai constaté que j'avais également un certificat dans mon trousseau.

Ouvrez l’accès au trousseau, cliquez sur Tous les éléments et recherchez git. Supprimer tout le trousseau

6
Muyide Ibukun

Allez à Credential Manager Allez à Windows Credentials Supprimez les entrées sous Generic Credentials Essayez de vous reconnecter.

5
Deepak

Comme mentionné précédemment, vous pouvez utiliser 

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

pour définir manuellement le nom d'utilisateur et l'e-mail pour un dépôt unique, mais vous devez ajouter cette commande:

git commit --amend --reset-author

si vous avez déjà essayé de pousser avant le changement. Sinon, les modifications n'apparaissent pas dans le fichier de configuration.

2
Martin819

J'utilise une machine pour envoyer du code à deux comptes GitHub différents avec un nom d'utilisateur différent. En supposant que vous ayez déjà créé un compte et que vous souhaitiez en créer un nouveau:

  1. Générer une nouvelle clé SSH ssh-keygen -t rsa -C "[email protected]"
  2. Enregistrez-le, mais souvenez-vous de ne pas écraser l'existant id_rsa. Donnez-lui un nom différent, par exemple id_rsa_another
  3. Copiez le contenu de la clé sur votre compte GitHub:

Paramètres -> Clés SSH et GPG -> Nouvelle clé SSH -> Attribuer une étiquette et coller la clé -> Ajouter une clé SSH

  1. Ajoutez la clé à l'agent ssh: ssh-add ~/.ssh/id_rsa_another
  2. Configurer un hôte GitHub: Créez un fichier de configuration avec touch ~/.ssh/config et éditez-le en fournissant des configurations à vos comptes:
#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

Maintenant, vous devriez être capable d’appliquer de différents comptes en fonction de la clé que vous ajoutez à l’agent ssh, c’est-à-dire pour utiliser votre premier compte, faites ssh-add ~/.ssh/id_rsa.

Vous voudrez peut-être aussi changer votre email d'utilisateur:

git config --global user.email "[email protected]"

ou effacez les clés ssh en cas d’erreur d’autorisation lors de la lecture du code d’un des comptes:

ssh-add -D

1
Tomasz Bartkowiak

git config user.name change seulement le nom que je commets. Je ne peux toujours pas pousser. C'est comme ça que j'ai résolu le problème et je pense que c'est un moyen facile pour moi.

  1. Générez une clé SSH sous le nom d'utilisateur que vous souhaitez envoyer sur l'ordinateur que vous utiliserez https://help.github.com/articles/connecting-to-github-with-ssh/

  2. Ajoutez cette clé au compte d'utilisateur github sur lequel vous souhaitez diffuser https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

  3. Choisissez de cloner avec SSH

Vous pouvez maintenant appuyer en tant que cet utilisateur sur ce dépôt.

1
Yang Fang

Si vous avez https://desktop.github.com/
alors vous pouvez aller dans Préférences (ou Options) -> Comptes
puis déconnectez-vous et connectez-vous.

1
Honest Abe

Si vous utilisez Windows et l'utilisateur Git pour Windows et la variable manager pour gérer les informations d'identification (alias Git-Credential-Manager-for-WindowsLien _), le problème est qu'il n'existe pas de moyen facile de changer d'utilisateur entre utilisateurs lorsque vous passez à GitHub avec https à l'aide de OAuth.

La raison en est que le jeton est stocké comme:

  • Adresse Internet: git:https://github.com
  • Nom d'utilisateur: Personal Access Token
  • Mot de passe: OAuth_Token

Les variantes de l'URL dans Internet Address ne fonctionnent pas, par exemple:

La solution: namespaces. Cela se trouve dans les détails de la configuration du Git-Credential-Manager-for-Windows:

Citant de cela:

espace de noms

Définit l'espace de noms pour les informations d'identification stockées.

Par défaut, le GCM utilise l'espace de noms 'git' pour toutes les informations d'identification stockées. La définition de cette valeur de configuration permet de contrôler l'espace de noms utilisé globalement ou par hôte.

git config --global credential.namespace name

Maintenant, stockez vos informations d'identification dans le gestionnaire des informations d'identification Windows en tant que:

  • Adresse Internet: git.username:https://github.com
  • Nom d'utilisateur: Personal Access Token
  • Mot de passe: OAuth_Token

Notez que nous avons changé: git -> git.username (où vous remplacez username par votre nom d'utilisateur actuel ou, à titre d'information, par tout ce que vous voudrez peut-être comme identifiant unique)

Maintenant, dans le référentiel où vous voulez utiliser l'entrée spécifique, exécutez:

git config credential.namespace git.username

(Encore une fois ... remplacez username par votre valeur souhaitée)

Votre .git/config va maintenant contenir:

[credential]
    namespace = git.username

Et voilà! Les informations d'identification correctes seront extraites de la banque d'informations d'identification Windows.

Ceci, bien sûr, ne change pas quel utilisateur/courriel pousse. Pour cela, vous devez configurer les habituels user.name et user.email

1
mementum

L'ID utilisateur où se trouve la validation est stocké dans le fichier de configuration.

aller en haut du référentielvi .git/config

changez la ligne url listée après "[remote" Origin "] pour avoir l'ID utilisateur approprié

0
wainCam

Vous pouvez ajouter une nouvelle URL distante pour l'autre nom d'utilisateur à l'aide de git remote add Origin-username https://[email protected]/repository_name.git.

Après cela, si vous utilisez Push avec git Push -u Origin-username master, ceci vous demandera le mot de passe.

0
Raman Singh