64 votes

Que signifie l'engagement de UserA avec UserB il y a 13 jours sur github ?

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.

68voto

zander Points 847

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.

10voto

Att Righ Points 596

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.

0voto

elquimista Points 727

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X