web-dev-qa-db-fra.com

git pousse avec le mauvais utilisateur du terminal

J'ai un problème avec git et mon terminal.

Voici une galerie pour vous montrer mon numéro: http://imgur.com/a/6RrEY

Lorsque I Push s’engage depuis mon terminal, git dit que je les envoie avec un autre nom d’utilisateur, c’est un utilisateur de mon organisation (mon entreprise) sans engagement du tout et il semble qu’il n’appartienne à personne: (voir la première photo de la galerie))

Mais cela n'arrive pas lorsque j'utilise Github pour mac, dans le flux, je vois les commits poussés par moi-même.

Le problème affecte également mes référentiels personnels, mon terminal indique que je ne dispose pas de l'autorisation de pousser les commits sur ces référentiels (ce qui est évidemment faux) car il essaie de le pousser avec cet utilisateur: (voir la deuxième image de la galerie)).

Devine quoi ? Cela ne se produit pas avec Github pour mac aussi.

J'ai changé mon ordinateur pour un nouvel ordinateur il y a quelques jours, alors j'ai réinitialisé toute ma clé ssh de github et n'en ai laissé qu'une nouvelle générée par Github pour Mac, donc je ne pense pas qu'il y ait une clé fantôme d'utilisateur/ssh cachée quelque part, ce disque dur est tout neuf: (voir la troisième photo de la galerie))

Mon fichier .gitconfig est clair, il n'y a que mes informations d'identification: (voir la quatrième photo de la galerie)}

Je ne comprends vraiment pas, aide, StackOverflow, tu es mon seul espoir.

(Mes excuses pour mes faibles compétences dans Gimp et la référence à Star Wars)

EDIT:ssh-add -l n'affiche que la bonne clé ssh créée par github pour mac et je n'ai qu'un seul compte github

EDIT2:ssh -T [email protected] me reconnaît comme le bon utilisateur.

EDIT3: Après quelques tests, il semble que mon terminal effectue les commits avec mon nom d'utilisateur, mais les pousse avec l'autre, Github pour mac se commet et pousse avec le bon nom d'utilisateur. Cette situation se produit à chaque repo I avoir/faire (même les nouveaux).

EDIT4: Dans un référentiel personnel git log --pretty="%h %an %ae" affiche mon bon nom d'utilisateur

(EDIT5:} _ Aucun signe de variables d'environnement qui remplaceraient mes informations d'identification dans ma env. Même si j'essaie de définir ces variables avec le bon problème d'identification, le problème persiste.

EDIT6: Les choses fonctionnent normalement si je force l'utilisateur dans le chemin de /.git/config d'un référentiel mais je ne pense pas que ce soit la bonne option: http://[email protected]/USER/REPO.git

(EDIT7:} _ Nous avons supprimé l'utilisateur git qui a envoyé les commits pour moi, ce qui entraîne une autre erreur: remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/USER/REPO.git/'

FINAL EDIT: J'ai installé git avec homebrew, tapégit config --global Push.default simpleet maintenant, il me faut mes informations d'identification même sans forcer l'utilisateur. C'est étrange. Merci à tous pour votre aide, vous êtes géniaux!

80
Yinfei

Malgré toutes les excellentes options offertes par d'autres utilisateurs, le seul moyen de résoudre ce problème était de réinstaller complètement git et de taper git config --global Push.default simple pour réécrire les bonnes informations d'identification.

15
Yinfei

Je viens d'avoir ce problème au travail. Le git intégré fourni avec mac ou vient lorsque vous installez les identifiants git de caches xcode dans le trousseau. La solution pour moi était de:

lancez l'accès au trousseau (démarrez Spotlight via cmd + espace, tapez un trousseau, appuyez sur entrée)

Sous trousseaux en haut à gauche, sélectionnez "login" Sous catégorie à gauche, sélectionnez "mots de passe".

trouvez le nom "github" et supprimez-le.

136
user542833

github vous identifie par la clé ssh qu'il voit, pas par aucun paramètre de git.

Par conséquent, vous devez vous assurer que la clé ssh de votre compte professionnel ne se trouve pas dans votre trousseau lorsque vous essayez d'envoyer depuis votre compte personnel, et inversement. 

Utilisez ssh-add -l pour déterminer les clés qui se trouvent dans votre trousseau et ssh-add -d <keyfile> pour en supprimer une, si cela fonctionnait, supprimez la clé ssh 'indésirable' de ~/.ssh/config.

la source

21
nithin

il semble que mon terminal effectue les commits avec mon nom d'utilisateur, mais les pousse avec l'autre

Le nom et l'adresse électronique de l'auteur et du committer (qui sont importants pour GitHub) proviennent de:

git config user.name
git config user.email

Cependant, comme indiqué dans git config et git commit-tree , ces valeurs peuvent être remplacées par des variables d'environnement:

GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL

Donc, vérifiez ces variables.

Les choses marchent normalement si je force l'utilisateur dans le .git/config d'un référentiel mais je ne pense pas que ce soit la bonne option.

Mais cela devrait être une bonne solution.
Lorsque vous utilisez une URL https, je spécifie toujours l’utilisateur pour s’assurer que l’authentification est effectuée avec le bon utilisateur.

http://[email protected]/USER/REPO.git
11
VonC

Si vous utilisez MAC, allez dans Keychain Access et supprimez l'entrée de l'utilisateur pour lequel vous ne voulez pas accéder à git.

7
Chitrapal Singh

Une solution temporaire est d'abord exécutée killall ssh-agent, puis ajoutez les clés ssh générées pour le compte que vous devez utiliser ssh-add ~/.ssh/id_4shameer.

Cela nous aidera à travailler sur plusieurs comptes github lorsque nous aurons l’erreur de type ERROR: Permission to user/repo-git.git denied to username.

7
mshameer

La solution pour moi consistait à ajouter une entrée dans mon fichier ~/.ssh/config pour github. Je devais le faire parce que:

  1. J'ai eu plusieurs comptes github avec la même clé (ne fais pas ça!)
  2. lorsque vous utilisez «git Push» avec ssh, votre ordinateur saisit id_rsa par défaut et l'utilise comme identité ssh.
  3. github ne peut pas (sans surprise) déconflicter le compte que vous voulez dire, car il fonde le compte sur la clé qui lui est présentée, ce qui, s'il est lié à plusieurs comptes, provoque une telle douleur. Le tueur est, pendant longtemps, je m'étais échappé avec ça et les choses se sont arrangées.

L'entrée que j'ai ajoutée est:

Host github.com
    Hostname github.com
    Port 22
    User waterproofpatch
    IdentityFile ~/.ssh/id_rsa_waterproofpatch

J'avais créé une clé new , unique sur mon compte, sous la forme id_rsa_waterproofpatch. Cette entrée de ma configuration ssh spécifie que pour les connexions à github.com, je souhaite présenter cette clé.

Une autre solution aurait probablement été pour moi de me connecter à l'autre compte, supprimer la clé ssh en double.

2
waterproofpatch

C'est ce qui a fonctionné pour moi: 

  1. Changer les informations d'identification dans .git-credentials 
  2. Modification des noms d'utilisateur et noms d'utilisateur globaux dans le fichier .gitconfig
0
reshetech

Ce qui a fonctionné pour moi, supprimer le dépôt et l'ajouter à nouveau:

git remote rm Origin
git remote add Origin [email protected]:fguillen/MyApp.git
0
fguillen

J'utilise Windows 10 et j'ai rencontré le même problème aujourd'hui. Dans mon cas, les informations d'identification de différents utilisateurs ont été enregistrées par le gestionnaire d'informations d'identification Windows. Supprimez/annulez les informations d'identification git à l'aide de la commande ci-dessous,

n'a pas aidé. J'ai dû supprimer manuellement l'entrée dans Windows en suivant la procédure ci-dessous,

Démarrer -> Panneau de configuration ---> Comptes utilisateur ---> Gérez vos informations d'identification ---> Informations d'identification Windows

Recherchez ensuite une entrée du type git: https://github.com et supprimez-la. Cela fonctionne bien après cela.

0
Gowtham

J'ai le même problème dans Windows 10, même après la désinstallation de mon git, car @ user542833 indique que c'est parce que le cache Windows et que vous devez supprimer les informations d'identification Github dans votre Windows Credential Manager et lorsque vous essayez à nouveau de Push, Windows demande vos informations d'identification et définit encore

0

Ce qui a fonctionné pour moi a été d’utiliser l’URL https du dépôt Github au lieu de l’URL ssh. Je suis allé à la page du projet Github et j'ai copié l'URL https dans mon presse-papiers, puis je l'ai collé dans la deuxième commande ci-dessous:

git remote rm Origin
git remote add Origin https://[...]
0
Keith Bennett

effacer le trousseau n'a pas aidé ... J'ai dû ssh-add -D et rajouter la clé avec ssh-add <keyfile>

0
Victor Piousbox

J'ai résolu ce problème en supprimant (ou en renommant * .bak) les fichiers id_rsa et id_rsa.pub sur MacOS High Sierra. Idée de ici .

J'ai des redirections d'hôte personnalisées dans ~/.ssh/config qui doivent être appliquées, mais qui ont été utilisées par un mauvais utilisateur avant de renommer les deux fichiers.

0
CodingYourLife

J'ai eu un problème similaire et il s'est avéré que le problème était le fait que le fichier de clé publique contenait mon adresse électronique sur la dernière ligne. Cela semblait remplacer le paramètre utilisateur dans ma configuration. Dès que j'ai supprimé mon email du fichier .pub (et que j'ai de nouveau chargé sur mon référentiel), Git s'est connecté en utilisant le bon utilisateur.

0
Mike