2017-04-24 3 views
3

Sur mon propre dépôt GitHub, j'ai remarqué qu'il y a des validations de unrecognized author. J'ai commencé à enquêter et j'ai réalisé que lorsque j'appuyais sur Visual Studio 2015 - Team Explorer des changements sur mon dépôt distant, les changements sont poussés avec succès même si je change mes paramètres globaux .gitconfig et que je définis un nom d'utilisateur invalide avec une adresse e-mail invalide - c'est le cas quand j'obtiens unrecognized author. Si j'essaye de pousser les changements directement par l'invite de commande git bash, et entrez le nom d'utilisateur ou le mot de passe invalide j'obtiendrai: invalid username or password - qui est évident, et normal.Pourquoi github autorise un auteur non reconnu à commettre

Et j'obtiens: The requested URL returned error: 403 si j'entre un utilisateur valide/passe - mais encore une fois, c'est normal parce que je n'ai pas ajouté cet utilisateur comme Collaborator. Si j'ajoute cet utilisateur comme collaborateur, je peux pousser avec succès.

Alors, pourquoi cela se passe-t-il?

Pourquoi GitHub me permet d'effectuer des changements via VS 2015 avec un utilisateur/e-mail invalide?

Répondre

3

Fondamentalement, git est décentralisé. Chaque copie du référentiel est égale à tous les autres. Les validations peuvent aller de n'importe où à n'importe où. Il est tout à fait normal que vous tiriez des validations de la télécommande X et les poussiez vers la télécommande Y, et lorsqu'elles apparaissent sur la télécommande Y, le nom du commetteur original restera sur elles même si cette personne n'a pas de compte sur la télécommande Y.

La commande Y (github dans ce cas) ne peut donc pas refuser une opération simplement parce qu'elle contient des noms de committer non reconnus. Lorsque vous vous authentifiez à partir de la ligne de commande, vous ne saisissez pas de nom d'utilisateur ni de mot de passe pour vous identifier en tant qu'auteur des validations en cours de transmission. Vous vous identifiez simplement comme quelqu'un qui a la permission de mettre ces commits dans le référentiel. Vraisemblablement, lorsque vous le faites à partir de l'IDE, il utilise vos informations d'identification github que vous avez entré à un moment donné.