2017-10-04 1 views
1

J'ai fait un git rebase pour modifier mon précédent commit. La structure est comme: HEAD->another_person's_commit->my_commit->...supprimer la personne sur valider avec

I modifié my_commit et git rebase --continue alors poussé, le premier commit fait par une autre personne obtenir « changé », le statut devient person commit with me. I.E, il est l'auteur du commit et je suis un committer qui a "changé" le commit. Je comprends git rebase va changer tout commit de l'amender (comme créer une nouvelle branche à partir d'un point changé).

Donc la question est-ce qu'il serait possible de supprimer mon nom sur son commit?

+0

Je m'attendrais à ce que vous apparaissiez en tant que committer, et qu'il apparaisse en tant qu'auteur. Est-ce ce que vous voyez? Aussi: vous * avez * fait quelque chose à son commit; vous l'avez basé sur un code différent. Ce n'est plus le changement qu'il a commis. –

Répondre

1

Dans Git, toute modification apportée à la validation - même une validation différente (modifiée) fait que l'enfant commet devient un nouveau commit enfant.

Si avant rebasage, vous avez:

x - x - x - you - him - x 

Ensuite, une fois que vous rebasage avez vraiment:

x - x - x - you - him - x 
     \ 
      you' - him' - x' 

même si vous donnez him' le message même de commettre exactement comme him, parce que dans le hachage him' est un parent différent commit (you') alors il est dans him, ce qui signifie que le hachage va changer (même si l'info du committer reste la même) - ce n'est plus le même commit.

Maintenant, d'accord rebasage supprime effectivement les liens vers you - him - x, et ils seront les déchets ramassés, laissant juste:

x - x - x - you' - him' - x' 

Il n'y a aucune raison de vous retirer comme commiter - il montre la vérité sur ce qui est arrivé . Vous pouvez "simuler" en changeant votre user.name et user.email à son nom et email, puis ré-amender son commit ... et il y a probablement une commande de plomberie de bas niveau ou une autre façon de le faire directement avec des drapeaux. Mais pourquoi? Il n'y a rien à gagner. Il est l'auteur original, et vous êtes maintenant l'auteur de ce nouveau commit you'.

Si vous voulez clarifier ce qui s'est passé, vous pouvez également modifier son message de validation pour ajouter une note: [réitéré en raison d'un rebasage, pas de modification] ou similaire.