Je suis intéressé de savoir lequel des deux utilisateurs a modifié le fichier lorsque github répertorie les deux. L'enregistrement git ne contient cependant que UserA.
Réponses
Trop de publicités?L'utilisateur A est celui qui a réellement effectué les modifications. UserB est celui qui a commis ces changements à cette branche. i.e. si UserA commet ses changements à la branche1, UserB vient, commet quelques changements à la branche2, rebase la branche1 avec la branche2. Maintenant, les commits les plus hauts dans la branche 1 montreront que l'utilisateur A a commis ces changements avec l'utilisateur B.
Edit : Cela se produit principalement pendant le rebasement et le cherry-picking, puisque les auteurs et les committers peuvent être différents dans ces processus.
La réponse de @venkatKA est précise et descriptive mais j'ai pensé ajouter quelques détails.
git cat-file -p HEAD
peut être utilisé pour imprimer des informations sur le commit
tree d85ed3c3a055c95445898a5119ea0a532459fdsf
parent 0b6ed951b2c04b4134c91ffa053b4330edfdffc1
author AuthA <autha@email.com> 1487356245 +0000
committer AutbB <aubt@email.com> 1487356245 +0000
Si vous voulez corriger les committers historiques (par exemple si vous changez d'identité), vous pouvez utiliser :
git filter-branch -f --tree-filter "GIT_COMMITTER_NAME='New Author'; GIT_COMMITTER_EMAIL='New Author'"
Les commentaires habituels sur les rebases qui brisent l'histoire et sur les raisons pour lesquelles le révisionnisme est une mauvaise idée s'appliquent.
Une autre des raisons possibles pour lesquelles cela se produit est l'utilisation de $GIT_AUTHOR_NAME
y $GIT_AUTHOR_EMAIL
les variables d'environnement.
Lorsque ces variables sont définies, elles remplacent la partie de l'auteur de chaque commit ultérieur, peu importe ce qui se passe. user.name
y user.email
Les valeurs de configuration sont définies localement. Dans ce cas, lorsque vous appuyez sur git cat-file -p HEAD
l'auteur montre la valeur de $GIT_AUTHOR_NAME
et le committer montre la valeur du local user.name
configuration.
Vous devrez donc supprimer les lignes qui exportent ces variables dans le fichier .bashrc
o .zshrc
ou si vous voulez préserver ces lignes mais ne voulez pas que cette chose se produise, insérer unset GIT_AUTHOR_NAME && unset GIT_AUTHOR_EMAIL
avant de lancer git commit.