Comment changer l'auteur de commit pour un commit spécifique?

2109

Je veux changer l'auteur d'un commit spécifique dans l'histoire. Ce n'est pas le dernier commit.

Je connais cette question - Comment changer l'auteur d'un commit dans git?

Mais je pense à quelque chose, où j'identifie la validation par hachage ou par hachage court.

MicTech
la source
Copie
tkruse

Réponses:

3570

Rebase interactive hors d'un point plus tôt dans l'historique que la validation que vous devez modifier ( git rebase -i <earliercommit>). Dans la liste des validations rebasées, changez le texte de pickà editcôté du hachage de celui que vous souhaitez modifier. Ensuite, lorsque git vous invite à modifier le commit, utilisez ceci:

git commit --amend --author="Author Name <[email protected]>" --no-edit

Par exemple, si votre historique de commit est A-B-C-D-E-Favec Fas HEAD, et que vous voulez changer l'auteur de Cand D, alors vous ...

  1. Précisez git rebase -i B( voici un exemple de ce que vous verrez après avoir exécuté la git rebase -i Bcommande )
    • si vous devez modifier A, utilisezgit rebase -i --root
  2. Changez les lignes pour Cet Dde pickàedit
  3. Quittez l'éditeur (pour vim, ce serait en appuyant sur Echap, puis en tapant :wq).
  4. Une fois le rebase commencé, il s’arrêtait C
  5. Vous git commit --amend --author="Author Name <[email protected]>"
  6. alors git rebase --continue
  7. Il s'arrêterait à nouveau à D
  8. Ensuite, vous le feriez à git commit --amend --author="Author Name <[email protected]>"nouveau
  9. git rebase --continue
  10. Le rebase se terminerait.
  11. Utilisez git push -fpour mettre à jour votre origine avec les commits mis à jour.
ambre
la source
90
Bonne réponse, mais pour les débutants: trouvez d'abord un commit précédant celui que vous souhaitez changer, puis exécutezgit rebase -i <commit>
Mathew Byrne
47
Si vous ne savez pas dans quel éditeur vous êtes, la réponse est probable vim. Pour enregistrer et quitter, tapez Esc: wq Entrée. D'un autre côté, si c'est Nano et que vous voyez des choses comme "WriteOut: ^ O" en bas, alors vous devriez utiliser Ctrl + O, Entrée, Ctrl + X à la place.
Amber
30
que faire si vous souhaitez modifier le tout premier commit? Quel est le hachage de validation précédent alors?
Brenden
219
Utilisez l' --no-editoption. git commit --amend --reset-author --no-editn'ouvrira pas d'éditeur. Disponible depuis git 1.7.9.
5lava
51
@Brenden pour modifier le tout premier commit du projet, utilisezgit rebase -i --root
Noah Passalacqua
488

La réponse acceptée à cette question est une utilisation merveilleusement intelligente de rebase interactif, mais il présente malheureusement des conflits si le commit dont nous essayons de changer l'auteur était sur une branche qui a ensuite été fusionnée. Plus généralement, cela ne fonctionne pas lors de la gestion des histoires en désordre.

Étant donné que je crains d'exécuter des scripts qui dépendent de la définition et de la suppression des variables d'environnement pour réécrire l'historique git, j'écris une nouvelle réponse basée sur ce message qui est similaire à cette réponse mais est plus complète.

Ce qui suit est testé et fonctionne, contrairement à la réponse liée. Supposons, pour plus de clarté, que 03f482d6le commit dont nous essayons de remplacer 42627abel'auteur soit le commit avec le nouvel auteur.

  1. Découvrez le commit que nous essayons de modifier.

    git checkout 03f482d6
    
  2. Faites changer l'auteur.

    git commit --amend --author "New Author Name <New Author Email>"
    

    Nous avons maintenant un nouveau commit avec le hachage supposé être 42627abe.

  3. Commander la branche d'origine.

  4. Remplacez l'ancien commit localement par le nouveau.

    git replace 03f482d6 42627abe
    
  5. Réécrivez tous les futurs commits basés sur le remplacement.

    git filter-branch -- --all
    
  6. Retirez le remplacement pour la propreté.

    git replace -d 03f482d6
    
  7. Poussez le nouvel historique (utilisez uniquement --force en cas d'échec ci-dessous, et uniquement après avoir vérifié l'intégrité avec git loget / ou git diff).

    git push --force-with-lease
    

Au lieu de 4-6, vous pouvez simplement rebaser sur un nouveau commit:

git rebase -i 42627abe
merlin2011
la source
9
Veuillez y ajouter une note pour reprendre votre succursale d'origine après l'étape 2.
Benjamin Riggs
42
Cela semble une alternative très claire à l'horrible git rebase -i. Jamais entendu parler de cette git replacechose auparavant. +1
FractalSpace
3
Pour nettoyer les refs / original / ... sauvegarde voir ici
alexis
5
Je recommande d'utiliser --force-with-leaseau lieu de -f. C'est plus sûr.
Jay Bazuzi
11
AVERTISSEMENT: sachez que git filter-branch -- --allles commits changent dans toutes les branches dans lesquelles se trouvait le commit d'origine. Si vous n'avez pas suffisamment d'informations d'identification (ou si vous ne voulez tout simplement pas modifier l'historique des autres branches), il est bon d'être prudent avec cette réponse.
ribamar
225

La documentation Github contient un script qui remplace les informations de validation pour toutes les validations dans une branche .

  • Exécutez le script suivant à partir du terminal après avoir modifié les valeurs des variables

    #!/bin/sh
    
    git filter-branch --env-filter '
    
    OLD_EMAIL="[email protected]"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="[email protected]"
    
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
    then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' --tag-name-filter cat -- --branches --tags
    
  • Poussez l'historique corrigé vers GitHub:

    git push --force --tags origin 'refs/heads/*'
    

    OU si vous souhaitez pousser les références sélectionnées des branches, utilisez

    git push --force --tags origin 'refs/heads/develop'
    
olivieradam666
la source
12
Cela le change dans tous les commits, pas dans un seul. Chose drôle, je l'ai fait il y a moins de 30 minutes.
Artjom B.
Quand j'ai trouvé cette réponse après avoir lu les précédentes, j'ai pensé qu'il valait la peine d'essayer et le tour est joué. Cependant, dans mon cas, le nom du committer n'a changé que lors de la validation initiale. Au fait, avant d'essayer les idées de la première réponse. Peut-être que cela a affecté le système d'une manière ou d'une autre.
Ruslan Gerasimov
2
Notez que si vous évitez d'utiliser clone/ push, vous vous retrouverez avec un espace de noms de sauvegarde refs/original/. Je n'ai pas trouvé de moyen de supprimer intelligemment cet espace de noms, j'ai donc fini par supprimer le répertoire .git/refs/original, ce qui a fonctionné.
VasiliNovikov
Pourquoi cela entraîne-t-il des modifications du référentiel si, par exemple, OLD_EMAIL ne correspond à rien? Pour une raison quelconque, certains (mais pas tous!) Commettent des hachages de changement.
mjs
1
Mon cas d'utilisation pour cette réponse est: J'ai deux comptes Github, dont j'ai involontairement utilisé pour faire des commits. Ce script a aidé à corriger toutes mes validations en renommant les e-mails / noms de committer incorrects. Bien sûr, si j'ai commis avec le mauvais utilisateur de, disons, du 50e commit au 500e commit, il y aura 450 commits divergents. Quoi qu'il en soit, après avoir exécuté le script, comme l'a souligné @andrej, vous devrez git push -fforcer les modifications push du dépôt.
LWY
168
  • Réinitialisez votre e-mail dans la configuration à l'échelle mondiale:

    git config --global user.email [email protected]

  • Maintenant, réinitialisez l'auteur de votre commit sans modification requise:

    git commit --amend --reset-author --no-edit

pravbeatle
la source
2
Non ce n'est pas. Regardez l'OP: It's not last commit.Alors, comment le feraient-ils amend?
underscore_d
2
C'est super, c'est dommage que ce soit le dernier commit seulement. J'en avais besoin sur les deux derniers, heureusement, alors viens de faire un git reset HEAD~, a exécuté vos lignes suggérées, puis a fait le prochain commit manuellement à nouveau. A bien fonctionné!
Matt Fletcher
2
Merci! L'auteur --reset-author a fait l'affaire pour moi, car sans lui l'auteur change mais le "commiter" reste avec les anciens détails de l'auteur.
Lucas P.
9
Pour corriger mes six derniers commits: définissez d'abord l'auteur correct pour le dépôt Git actuel à l'aide de git config --local user.name FirstName LastName et git config --local user.email [email protected]. Appliquer ensuite aux six derniers commits en utilisant git rebase --onto HEAD~6 --exec "git commit --amend --reset-author --no-edit" HEAD~6. Enfin pousser à repo Git à distance à l' aide git push --force-with-lease.
olibre
@olibre cela fonctionne comme un charme, merci.
Bruno Gasparotto
88

Vous pouvez changer l'auteur du dernier commit en utilisant la commande ci-dessous.

git commit --amend --author="Author Name <[email protected]>"

Cependant, si vous voulez changer plus d'un nom d'auteur de commit, c'est un peu délicat. Vous devez démarrer un rebase interactif puis marquer les validations comme éditer puis les modifier un par un et terminer.

Commencez à rebaser avec git rebase -i. Cela vous montrera quelque chose comme ça.

https://monosnap.com/file/G7sdn66k7JWpT91uiOUAQWMhPrMQVT.png

Remplacez le pickmot - clé editpar les validations pour lesquelles vous souhaitez modifier le nom de l'auteur.

https://monosnap.com/file/dsq0AfopQMVskBNknz6GZZwlWGVwWU.png

Fermez ensuite l'éditeur. Pour les débutants, appuyez sur Escapepuis tapez :wqet appuyez sur Enter.

Ensuite, vous verrez votre terminal comme si rien ne s'était passé. En fait, vous êtes au milieu d'un rebase interactif. Il est maintenant temps de modifier le nom d'auteur de votre commit à l'aide de la commande ci-dessus. Cela ouvrira à nouveau l'éditeur. Quittez et continuez avec rebase git rebase --continue. Répétez la même chose pour le nombre de validations que vous souhaitez modifier. Vous pouvez vous assurer que le rebase interactif est terminé lorsque vous recevez le No rebase in progress?message.

Fatih Acet
la source
Pouvez-vous mettre à jour vos photos?
Shimmy Weitzhandler
1
Si vous avez plusieurs validations à modifier, au lieu de les modifier individuellement, vous pouvez également laisser l' pickaction et ajouter après chaque ligneexec git commit --no-edit --amend --author="MyNewAuthor <[email protected]>"
Pierre-Olivier Vares
60

Les réponses à la question à laquelle vous avez lié sont de bonnes réponses et couvrent votre situation (l'autre question est plus générale car elle implique de réécrire plusieurs commits).

Comme excuse pour essayer git filter-branch, j'ai écrit un script pour réécrire le nom de l'auteur et / ou le courriel de l'auteur pour un commit donné:

#!/bin/sh

#
# Change the author name and/or email of a single commit.
#
# change-author [-f] commit-to-change [branch-to-rewrite [new-name [new-email]]]
#
#     If -f is supplied it is passed to "git filter-branch".
#
#     If <branch-to-rewrite> is not provided or is empty HEAD will be used.
#     Use "--all" or a space separated list (e.g. "master next") to rewrite
#     multiple branches.
#
#     If <new-name> (or <new-email>) is not provided or is empty, the normal
#     user.name (user.email) Git configuration value will be used.
#

force=''
if test "x$1" = "x-f"; then
    force='-f'
    shift
fi

die() {
    printf '%s\n' "$@"
    exit 128
}
targ="$(git rev-parse --verify "$1" 2>/dev/null)" || die "$1 is not a commit"
br="${2:-HEAD}"

TARG_COMMIT="$targ"
TARG_NAME="${3-}"
TARG_EMAIL="${4-}"
export TARG_COMMIT TARG_NAME TARG_EMAIL

filt='

    if test "$GIT_COMMIT" = "$TARG_COMMIT"; then
        if test -n "$TARG_EMAIL"; then
            GIT_AUTHOR_EMAIL="$TARG_EMAIL"
            export GIT_AUTHOR_EMAIL
        else
            unset GIT_AUTHOR_EMAIL
        fi
        if test -n "$TARG_NAME"; then
            GIT_AUTHOR_NAME="$TARG_NAME"
            export GIT_AUTHOR_NAME
        else
            unset GIT_AUTHOR_NAME
        fi
    fi

'

git filter-branch $force --env-filter "$filt" -- $br
Chris Johnsen
la source
+1 merci. assembla.com git repo ne semble pas changer toutes les références d'auteur dans la vue web du repo, mais les résultats de 'git pull / clone' semblent fonctionner correctement.
Johnny Utahh
Excellente solution, car elle ne change que ce qui est prévu, et pas d'autres champs, comme la date de validation.
Guillaume Lemaître
12
La documentation Github contient un script similaire
olivieradam666
2
@ olivieradam666 qui fonctionne comme un charme et qui est plus facile à lire
fregante
@ olivieradam666 Merci. Vous devriez vraiment ajouter cela comme réponse pour que cela reçoive plus d'attention.
seane
44

S'engager avant:

entrez la description de l'image ici

Pour corriger l'auteur de toutes les validations, vous pouvez appliquer la commande à partir de la réponse de @ Amber:

git commit --amend --author="Author Name <[email protected]>"

Ou pour réutiliser votre nom et votre e-mail, vous pouvez simplement écrire:

git commit --amend --author=Eugen

Validez après la commande:

entrez la description de l'image ici

Par exemple pour tout changer à partir de 4025621:

entrez la description de l'image ici

Vous devez courir:

git rebase --onto 4025621 --exec "git commit --amend --author=Eugen" 4025621

Remarque: Pour inclure un auteur contenant des espaces tels qu'un nom et une adresse e-mail, l'auteur doit être entouré de guillemets d'échappement. Par exemple:

git rebase --onto 4025621 --exec "git commit --amend --author=\"Foo Bar <[email protected]>\"" 4025621

ou ajoutez cet alias dans ~/.gitconfig:

[alias]
    reauthor = !bash -c 'git rebase --onto $1 --exec \"git commit --amend --author=$2\" $1' --

Et puis exécutez:

git reauthor 4025621 Eugen
Eugen Konkov
la source
1
Pour vérifier que la commande a fonctionné comme prévu, j'ai examiné la sortie de git shortlog -e -s.
Taylor Edmiston
5
C'est la réponse qui a le mieux servi mes objectifs, merci. Et comme je voulais juste ajuster mon adresse e-mail, j'ai pu exécuter avec --exec = "git commit --amend --reset-author", après avoir mis à jour mon .git / config.
Dato
1
Eeh, je ne sais pas pourquoi j'ai oublié! Fait maintenant.
Dato
Excellente réponse et très facile à corriger. J'adore l'alias!
J_A_X
cela ne m'a pas aidé. maintenant, j'ai continuer l' erreur Rebase Failed
Alexey Sh.
17

La réponse d' Amber comporte une étape supplémentaire si vous utilisez un référentiel centralisé:

git push -f pour forcer la mise à jour du référentiel central.

Attention, il n'y a pas beaucoup de personnes travaillant sur la même branche car cela peut ruiner la cohérence.

Fabian76
la source
16

Lorsque vous faites cela, git rebase -iil y a ce morceau intéressant dans le document:

Si vous souhaitez plier deux ou plusieurs validations en une seule, remplacez la commande "pick"pour la deuxième validation et les validations suivantes par "squash"ou "fixup". Si les commits avaient des auteurs différents, le commit plié sera attribué à l'auteur du premier commit. Le message de commit suggéré pour le commit plié est la concaténation des messages de commit du premier commit et de ceux avec la "squash"commande, mais omet les messages de commit des commits avec la "fixup"commande.

  • Si vous avez des antécédents de A-B-C-D-E-F,
  • et vous souhaitez modifier les validations Bet D(= 2 validations),

alors vous pouvez faire:

  • git config user.name "Correct new name"
  • git config user.email "[email protected]"
  • créer des validations vides (une pour chaque validation):
    • vous avez besoin d'un message pour rebaser
    • git commit --allow-empty -m "empty"
  • démarrer l'opération de rebase
    • git rebase -i B^
    • B^sélectionne le parent de B.
  • vous voudrez mettre un commit vide avant chaque commit à modifier
  • vous voulez changer pickà squashceux.

Exemple de ce git rebase -i B^qui vous donnera:

pick sha-commit-B some message
pick sha-commit-C some message
pick sha-commit-D some message
pick sha-commit-E some message
pick sha-commit-F some message
# pick sha-commit-empty1 empty
# pick sha-commit-empty2 empty

changer cela en:

# change commit B's author
pick sha-commit-empty1 empty
squash sha-commit-B some message
# leave commit C alone
pick sha-commit-C some message
# change commit D's author
pick sha-commit-empty2 empty
squash sha-commit-D some message
# leave commit E-F alone
pick sha-commit-E some message
pick sha-commit-F some message

Il vous demandera de modifier les messages:

# This is a combination of 2 commits.
# The first commit's message is:

empty

# This is the 2nd commit message:

...some useful commit message there...

et vous pouvez simplement supprimer les premières lignes.

dnozay
la source
16

Conformément à la réponse d' Eugen Konkov , pour commencer à partir de la validation racine, utilisez --rootflag. Le --no-editdrapeau est utile aussi

git rebase --root --exec "git commit --amend --author='name <email>' --no-edit"
korwalskiy
la source
Cela a fonctionné et changé sur tous les commits.
SagarKapasi099
1
Merci d'avoir répondu. Il fallait ajouter - interactif pour le faire fonctionner. git rebase --root --interactive --exec "git commit --amend --author = 'name <email>' --no-edit"
Sreeragh AR
8

Trouvez un moyen qui peut changer rapidement d'utilisateur et n'a aucun effet secondaire sur les autres validations.

Manière simple et claire:

git config user.name "New User"
git config user.email "[email protected]"

git log
git rebase -i 1f1357
# change the word 'pick' to 'edit', save and exit

git commit --amend --reset-author --no-edit
git rebase --continue

git push --force-with-lease

opérations détaillées

  • afficher les journaux de validation et trouver l'ID de validation avant votre validation que vous souhaitez modifier:
git log
  • git rebase start from the chosed commit id to the recent inversely:
git config user.name "New User"
git config user.email "[email protected]"
git rebase -i 1f1357

# change word pick to edit, save and exit
edit 809b8f7 change code order 
pick 9baaae5 add prometheus monitor kubernetes
edit 5d726c3 fix liquid escape issue   
edit 3a5f98f update tags
pick 816e21c add prometheus monitor kubernetes
  • rebase sera arrêté au prochain ID de validation, sortie:
Stopped at 809b8f7...  change code order 
You can amend the commit now, with
  git commit --amend 

Once you are satisfied with your changes, run

  git rebase --continue
  • confirmer et continuer votre rebase jusqu'à ce qu'il réussisse refs/heads/master.
# each continue will show you an amend message
# use git commit --amend --reset-author --no-edit to comfirm
# use git rebase --skip to skip
git commit --amend --reset-author --no-edit
git rebase --continue
git commit --amend --reset-author --no-edit
...
git rebase --continue
Successfully rebased and updated refs/heads/master.
  • git push pour mettre à jour
git push --force-with-lease
NOZUONOHIGH
la source
5

Si la validation que vous souhaitez modifier n'est pas la dernière validation, suivez les étapes ci-dessous. Si votre commit est dans une branche différente, passez d'abord à cette branche.

git checkout nom_branche

Recherchez commit avant le commit que vous souhaitez modifier et recherchez son hachage. Exécutez ensuite la commande rebase.

git rebase -i -p hachage de commit

Ensuite, un éditeur s'ouvrira et entrera «modifier» pour les commits que vous souhaitez modifier. Laissez les autres avec l'option de «sélection» par défaut. Une fois modifié, entrez la touche 'esc' et wq! pour quitter.

Exécutez ensuite la commande git commit avec l'option de modification.

git commit --amend --author = "Nom d'utilisateur email" --no-edit

Exécutez ensuite la commande suivante.

git rebase --continue

Une fois l'auteur du commit mis à jour dans le référentiel local, envoyez les modifications au référentiel distant.

ChannaB
la source
Je pense que c'est la façon la plus simple de le faire. J'utilisais la commande reword et cela échoue. J'ai appris que je dois utiliser la commande d'édition à la place. Peut-être que le mot-clé «modifier» peut être mis en évidence. Merci pour la réponse @ChannaB 👍
Berk
étapes très faciles à suivre. Je vous remercie!
Habiba
4

Il existe également une approche paresseuse de ce problème, en particulier si vous souhaitez modifier plusieurs validations. Dans mon cas, j'avais une nouvelle branche avec plusieurs commits avec un mauvais auteur, donc ce qui m'a aidé:

Accédez à votre succursale d'origine:

git checkout develop

Créez-en une nouvelle branche:

git checkout -b myFeature develop 

Fusionnez-le sans valider les informations en un seul commit:

git merge --no-commit --squash branchWrongAuthor

Vous pouvez également souhaiter mettre en place des modifications:

git stage .

Modifiez le nom de l'auteur et validez les modifications:

git commit --amend --author "New Author Name <New Author Email>" -m "new feature added"

Et c'est tout, vous pouvez pousser les changements.

git push

Vous pouvez ensuite supprimer la branche avec un mauvais auteur.

alexlz
la source
4

Étapes pour renommer le nom de l'auteur après l'envoi de la validation

  1. Tapez d'abord "git log" pour obtenir l'identifiant de validation et plus de détails
  2. git rebase i HEAD ~ 10 (10 est le commit total à afficher sur rebase)

    If you Get anything like below

    fatal: It seems that there is already a rebase-merge directory, and I wonder if you are in the middle of another rebase. If that is the case, please try

    git rebase (--continue | --abort | --skip) If that is not the case, please rm -fr ".git/rebase-merge" and run me again. I am stopping in case you still have something valuable there.

  3. Tapez ensuite "git rebase --continue" ou "git rebase --abort" selon vos besoins

    • maintenant votre fenêtre de rebase sera ouverte, cliquez sur la touche "i" du clavier
    • alors vous obtiendrez la liste des validations à 10 [car nous avons passé 10 validations ci-dessus] Comme ci-dessous

    pick 897fe9e simplify code a little

    pick abb60f9 add new feature

    pick dc18f70 bugfix

  4. Maintenant, vous devez ajouter la commande ci-dessous juste en dessous du commit que vous souhaitez modifier, comme ci-dessous

    pick 897fe9e simplify code a little exec git commit --amend --author 'Author Name <[email protected]>' pick abb60f9 add new feature exec git commit --amend --author 'Author Name <[email protected]>' pick dc18f70 bugfix exec git commit --amend --author 'Author Name <[email protected]>'

    1. Voilà, maintenant appuyez simplement sur ESC,: wq et vous êtes tous ensemble

    2. Puis git push origin HEAD: BRANCH NAME -f [veuillez prendre soin de -f Force push]

    comme git push -fougit push origin HEAD: dev -f

Kirtikumar A.
la source
excellente réponse, pourriez-vous mettre à jour le point 6 avec un exemple de git pushcommande?
Lukasz 'Severiaan' Grela
1
@ Lukasz'Severiaan'Grela édité, veuillez vérifier maintenant, Merci
Kirtikumar A.
3

Changer le nom et l'adresse e-mail de votre partenaire à l'échelle mondiale:

$ git config --global user.name "John Doe"
$ git config --global user.email "[email protected]"

Modification du nom et de l'e-mail de votre committer par référentiel:

$ git config user.name "John Doe"
$ git config user.email "[email protected]"

Modification des informations sur l'auteur juste pour la prochaine validation:

$ git commit --author="John Doe <[email protected]>"

Astuce : Pour toute autre situation et lire plus d'informations, lisez la référence de l'article .

AmerllicA
la source
2

Si vous devez changer le commit AUTHOR OF THE LAST et qu'aucun autre n'utilise votre dépôt, vous pouvez annuler votre dernier commit avec:

git push -f origin last_commit_hash:branch_name 

changez le nom de l'auteur de votre commit avec:

git commit --amend --author "type new author here"

Quittez l'éditeur qui s'ouvre et repoussez votre code:

git push
pebox11
la source
2

Pour le message de validation de fusion, j'ai constaté que je ne pouvais pas le modifier en utilisant rebase, au moins sur gitlab. Il montre la fusion comme un commit mais je ne peux pas rebaser sur ce #sha. J'ai trouvé ce message utile.

git checkout <sha of merge>
git commit --amend # edit message
git rebase HEAD previous_branch

Ces trois lignes de code ont fait le travail pour changer le message de validation de fusion (comme l'auteur).

Jason Liu
la source
1

vous pouvez utiliser ces commandes depuis la page officielle de github

https://help.github.com/en/github/using-git/changing-author-info

voici les commandes

#!/bin/sh

git filter-branch --env-filter '

OLD_EMAIL="[email protected]"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="[email protected]"

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

Ici, vous pouvez changer l'ancien e-mail pour un nouveau nom d'utilisateur et une nouvelle adresse e-mail.

Mudassir Khan
la source