La réponse la plus votée ici est maintenant périmée. Git affiche cet avertissement effrayant lors de l'utilisation de git filter-branch -.
WARNING: git-filter-branch has a glut of gotchas generating mangled history
rewrites. Hit Ctrl-C before proceeding to abort, then use an
alternative filtering tool such as 'git filter-repo'
(https://github.com/newren/git-filter-repo/) instead.
filter-repo
ne fait pas (encore) partie de git et doit être installé manuellement.
# Requires git v2.22+ and python v3.5+. Check with -
git --version && python3 --version
# Install using pip
pip install git-filter-repo
Pour remplacer seulement l'email dans les commits précédents exécuter la commande comme ceci -
git filter-repo --email-callback '
return email if email != b"incorrect@email" else b"correct@email"
'
Pour remplacer les deux, e-mail et nom de l'auteur dans les commits précédents exécutez la commande comme ceci -
git filter-repo --commit-callback '
if commit.author_email == b"incorrect@email":
commit.author_email = b"correct@email"
commit.author_name = b"Correct Name"
commit.committer_email = b"correct@email"
commit.committer_name = b"Correct Name"
'
Assurez-vous que les retraits sont présents lorsque vous collez la commande dans votre terminal. Le callback utilise la syntaxe python, les indentations sont donc importantes.
Pour en savoir plus sur les callbacks de filter-repo, consultez la section docs .
2 votes
Une autre raison pour laquelle vous pourriez vouloir changer la propriété email est cette erreur github :
remote: error: GH007: Your push would publish a private email address.
... ` ! [remote rejected] master -> master (push declined due to email privacy restrictions)`.0 votes
Voir aussi stackoverflow.com/q/750172/1340631 .