Je souhaite changer mon nom, prénom et email dans tous mes engagements, est-ce possible?
git
git-filter-branch
Joshua
la source
la source
Réponses:
Utilisez
git-filter-branch
.Cela n'affecte que l'auteur, pas le committer (qui pour la plupart des commits sera le même que l'auteur). Si vous souhaitez les réécrire également, définissez les variables
GIT_COMMITTER_NAME
etGIT_COMMITTER_EMAIL
.L' avertissement standard sur la réécriture de l'historique s'applique; faites-le seulement à l'histoire qui n'a pas encore été partagée.
Mise à jour de juin 2018
Le manuel inclut désormais une solution, en utilisant
--env-filter
, dans ses exemples: https://git-scm.com/docs/git-filter-branch#_examples :la source
msysgit
, vous avez toujours accès àbash
. Sinon, je n'ai aucune idée.Pour réécrire à la fois l'auteur et le validateur dans tous les commits sélectionnés:
la source
git push --all origin --force
S'il n'y a pas d'autres auteurs, vous pouvez faire:
la source
Enregistrez le script ci-dessous comme par exemple
~/.bin/git-replace-author
et exécutez-le en utilisant, par exemple:Sans argument, il met à jour tous les commits avec votre nom pour utiliser votre adresse e-mail actuelle selon la configuration de Git.
Raw (à télécharger)
la source
~/.bin/
doit être à l' intérieur des utilisateurs$PATH
et les besoins de fichiers à exécutable, donc exécuter:chmod +x ~/.bin/git-replace-author
.Seulement si vous n'avez pas poussé vos engagements dans le monde. Sinon, tout le monde a votre ancien nom dans son repo, ce qui est peu probable que vous puissiez changer celui de tout le monde.
la source
Avec Git 2.24 (Q4 2019),
git filter-branch
(et BFG) est obsolète .L'équivalent serait, using
newren/git-filter-repo
, et sa section d'exemple :avec
my-mailmap
:Cela remplacerait le nom de l'auteur et l'adresse e-mail de tout commit effectué par quiconque avec
<[email protected]>
Voir la
git shortlog
section auteur du mappage pour la syntaxe exacte dela source