J'ai engagé un tas de commits dans un projet sur Github, mais j'ai réalisé que je n'avais pas configuré le bon email et le nom complet du commetteur sur l'ordinateur que j'utilise actuellement pour faire mes commits et donc l'avatar et l'adresse e-mail des utilisateurs ne sont pas là.
Comment puis-je réécrire tous les e-mails et noms d'utilisateur de commit passés?
Réponses:
Vous pouvez ajouter cet alias:
Pour changer le nom de l'auteur:
ou l'email des 10 derniers commits seulement:
Alias:
Source: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
la source
git change-commits GIT_COMMITTER_EMAIL "[email protected]" "[email protected]"
pour changer l'email du committer.change-commits = "!f() { VAR1=$1; VAR='$'$1; OLD=$2; NEW=$3; echo \"Are you sure for replace $VAR $OLD => $NEW ?(Y/N)\";read OK;if [ \"$OK\" = 'Y' ] ; then shift 3; git filter-branch --env-filter \"if [ \\\"${VAR}\\\" = '$OLD' ]; then export $VAR1='$NEW';echo 'to $NEW'; fi\" $@; fi;}; f "
Cannot create a new backup. A previous backup already exists in refs/original/
Voir ici :
la source
Si vous avez déjà poussé certains de vos commits au dépôt public, vous ne pas vouloir faire cela, ou il serait une autre version de l'histoire du maître que d' autres ont peut - être utilisé. "Ne traversez pas les ruisseaux ... Ce serait mauvais ..."
Cela dit, s'il ne s'agit que des validations que vous avez effectuées sur votre référentiel local, corrigez-le avant de pousser vers le serveur. Vous pouvez utiliser la
git filter-branch
commande avec l'--commit-filter
option, donc elle ne modifie que les commits qui correspondent à vos informations incorrectes, comme ceci:la source
git update-ref -d refs/original/refs/heads/master
, voir < stackoverflow.com/a/7654880/333403 >.A previous backup already exists in refs/original/
dans ce cas, réexécutez-le, avec le nouvel e-mail, et ajoutez un-f
avant le --commit-filter. Utilisez à votre propre discrétion. C'est généralement-f
une chose dangereuse à faire sans savoir ce que cela fait.Après avoir appliqué la réponse d'Olivier Verdier:
... pour pousser l'historique modifié sur le référentiel d'origine, utilisez:
La commande ci-dessus (notez le plus) oblige également à réécrire l'historique sur le dépôt d'origine. Utiliser avec précaution!
la source
https://help.github.com/articles/changing-author-info/
cela a totalement fonctionné pour moi. Après git push, assurez-vous de voir la mise à jour sur le portail Web de git. Si le commit n'était toujours pas lié à mon compte, afficher l'image miniature par défaut à côté du commit et qu'il n'était pas reflété sur le graphique chronologique de mes contributions, accédez à l'url de commit et ajoutez .patch à la fin de l'url, et vérifiez le nom et l'email sont corrects.
la source
Pour ceux qui veulent juste la version facile à copier-coller (à part la mise à jour des e-mails et des noms):
la source
Considérant que l'utilisation de
git-filter-branch
n'est pas souhaitée , faire la même chose dans git-filter-repo (vous devrez peut-être l'installer d'abord avecpip install git-filter-repo
):Si le référentiel est original, sans télécommande, vous devrez ajouter
--force
pour forcer la réécriture. (Vous pouvez créer une sauvegarde de votre dépôt avant de faire cela.)Si vous ne souhaitez pas conserver les références (elles seront affichées dans l'historique des branches de Git GUI), vous devrez ajouter
--replace-refs delete-no-add
.Pour des fonctionnalités plus avancées, voir "Filtrage des noms et des e-mails" .
PS volé et amélioré de https://stackoverflow.com/a/59591928/714907 .
la source