Git, réécrire précédente livraison de noms d'utilisateur et e-mails
J'ai engagé un ensemble de commits pour un projet sur Github, cependant, j'ai réalisé que je n'avais pas le bon e-mail et de valider le nom complet sur l'ordinateur, je suis en train d'utiliser pour faire ma s'engage et, par conséquent, les utilisateurs avatar et votre adresse de courriel ne sont pas là.
Comment puis-je réécrire toutes les dernières commettre e-mail et nom d'utilisateur?
- double possible de Comment puis-je changer l'auteur d'un commit dans git?
- J'ai vécu cela après la modification de l'adresse e-mail sur mon compte GitHub. En plus de pression de modifications du code de la repo git local à l'aide de git en ligne de commande (et non sur le GitHub de bureau) de l'interface, j'ai aussi édité le texte et les fichiers gérés directement à partir de la télécommande repo git en utilisant le GitHub de l'interface web. La nouvelle adresse de courriel propagée uniquement pour les changements résultant de la dernière actions et de ne pas l'ancien.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter cet alias:
De changer le nom de l'auteur:
ou l'e-mail uniquement pour les 10 dernières s'engage à:
Alias:
Source: https://github.com/brauliobo/gitconfig/blob/master/configs/.gitconfig
git change-commits GIT_COMMITTER_EMAIL "[email protected]" "[email protected]"
de changer le livreur e-mail.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 "
!
dans le début de l'alias? Ce n'est que faire?change-commits =
expression dans votre réponse diffère par un signe (un\
avant$@
) à partir du code dans votre dépôt GitHub. C'est une erreur, non?GIT_COMMITTER_EMAIL
, ce qui a fonctionné. Cependant, lorsque j'essaie de l'utiliser à nouveau pour changer leGIT_AUTHOR_EMAIL
, Git se plaint et ditCannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
. Maintenant, je peux utiliser le-f
drapeau, ou je peux supprimer la sauvegarde à l'aide degit update-ref -d refs/original/refs/heads/<branch-name>
.git checkout -b temp-branch
suivie parfor var in GIT_AUTHOR_EMAIL GIT_COMMITTER_EMAIL; do for email in email@address1 email@address2 email@address3; do git change-commits $var $email target-email@address; git update-ref -d refs/original/refs/heads/temp-branch; done; done
de changer toutes les adresses de courriel à la fois pour les auteurs et les valider.git config alias.change-commits
..., n'oubliez pas d'ajouter--global
pour faire de ce mondial, plutôt que de projet, alias.Cannot create a new backup. A previous backup already exists in refs/original/
La solution est déjà là: Changer l'auteur et à valider le nom et l'adresse e-mail de multiples s'engage dans Git
À savoir,
GIT_COMMITTER_NAME
si?Si vous avez déjà poussé certains de vos commits dans le dépôt public, vous ne pas voulez le faire, ou de faire une autre version de la maîtrise de l'histoire que les autres puissent avoir utilisé. "Ne pas traverser les cours d'eau... Il serait mauvais..."
Cela dit, si c'est seulement les changements que vous avez apportés à votre dépôt local, puis par tous les moyens de corriger cela avant de vous pousser vers le haut pour le serveur. Vous pouvez utiliser le
git filter-branch
de commande avec le--commit-filter
option, de sorte qu'il modifie uniquement s'engage qui correspondent à vos informations incorrectes, comme ceci:Après l'application de l'Olivier Verdier réponse:
...pour pousser a changé l'histoire sur l'origine du référentiel utilisation:
La commande ci-dessus (note la plus) et les forces de la réécriture de l'histoire sur l'origine des pensions de ainsi. À utiliser avec prudence!
Pour ceux qui veulent juste le simple copier coller de la version (en dehors de la mise à jour des emails et noms):
https://help.github.com/articles/changing-author-info/
ce totalement fonctionné pour moi. Après la commande git push, assurez-vous de voir la mise à jour sur git portail web. Si la validation n'était pas encore relié à mon compte, illustré par défaut de l'image miniature à côté de la commettre et il n'a pas été répercuté sur mes contributions frise chronologique, aller à la validation d'url et de les compléter .patch à la fin de l'url, et de vérifier le nom et l'adresse email sont corrects.