284 votes

Comment modifier plusieurs commits dans Git pour changer d'auteur ?

J'ai fait une série de commits dans Git et je réalise maintenant que j'ai oublié de définir correctement les propriétés de mon nom d'utilisateur et de mon email (nouvelle machine). Je n'ai pas encore poussé ces commits vers mon dépôt, alors comment puis-je corriger ces commits avant de le faire (seulement les 3 derniers commits sur la branche master) ?

J'ai regardé git reset y git commit -C <id> --reset-author mais je ne pense pas être sur la bonne voie.

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

2voto

Je crois que ce que vous cherchez est git rebase --interactive

Il vous permet de revenir à un commit spécifique, puis de parcourir l'historique en ajoutant ou en regroupant des commits.

Vous avez ici une explication https://web.archive.org/web/20100213104931/http://blog.madism.org/index.php/2007/09/09/138-git-awsome-ness-git-rebase-interactive

2voto

Ruto Collins Points 875

Si vous cherchez un script, celui-ci m'a été utile.

  1. Téléchargez le script à partir de GitHub et l'enregistrer dans un endroit facilement accessible.

  2. Changez les permissions du fichier script pour lui permettre de s'exécuter :

    chmod +x changeauthor.sh

  3. Naviguer dans le référentiel avec l'historique de commit incorrect

    cd path/to/repo

  4. Exécuter le script (avec ou sans drapeaux)

    ../path/to/changeauthor.sh --old-email kaka.ruto@example.com \
        --new-email ruto.kaka@example.com --new-name "Kaka Ruto" --remote origin

Faites attention car cela va réécrire tout l'historique de votre référentiel actuel ! La bonne chose est que le script vous donne des avertissements et des informations sur ce que vous êtes sur le point de faire.

Plus d'informations ici https://www.adamdehaven.com/blog/update-commit-history-author-information-for-git-repository/

0voto

mr. Y Points 167

Comme suggéré dans cette réponse git-filter-repo est préférable pour cette tâche.

Cependant, pour changer simplement le nom et/ou l'adresse électronique de l'auteur, on peut utiliser --mailmap o --use-mailmap au lieu des callbacks.

Vous devez créer un fichier mailmap en respectant le format (cf. git-filtre-repo/docs o git-scm.com/docs )

Ensuite, il suffit d'exécuter

git filter-repo --mailmap .mailmap

-2voto

tymac Points 7397

Si vous ne vous sentez pas à l'aise avec l'avilissement et la modification, vous pouvez procéder de cette façon. Dans le même temps, vous définissez également la configuration globale, ce que vous avez probablement l'intention de faire de toute façon.

git reset HEAD~ (annuler la dernière livraison)

git config --global user.name "Your Name"

git config --global user.email you@example.com

git commit -m "message"

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