2010-08-29 9 views
22

J'ai fait un push à un repo git nouvellement forké sur Github mais après avoir commis j'ai remarqué que mon nom d'utilisateur était incorrect. Le nom d'utilisateur que j'ai poussé était "Brock Woolf" mais il aurait dû être brockwoolf qui est mon nom d'utilisateur sur github.Modifier le nom d'utilisateur pour un commit poussé sur Github

je l'ai déjà changé la valeur par défaut localement comme ceci:

git config --global user.name "brockwoolf" 

Mais comment puis-je changer le nom d'utilisateur sur le déjà poussé le changement?

+0

Vous pouvez bien sûr faire ce que vous aimez avec vos projets, mais ce paramètre de configuration est 'user.name', pas nom d'utilisateur, comme dans" le nom de l'utilisateur ". Utiliser un vrai nom pour ça est assez commun. – Cascabel

+0

Je sais mais pour github, vous utilisez votre nom d'utilisateur ou il ne sera pas associer Gravatars je pense. –

+0

Dupliquer de [Comment changer l'auteur d'un commit en git?] (Http://stackoverflow.com/questions/750172/how-do-i-change-the-author-of-a-commit-in- git) –

Répondre

26

Le changement déjà poussé, si les gens l'ont tiré, est quelque chose que vous devrez vivre avec. Si personne ne l'a tiré (ie vous réalisez votre erreur juste après avoir poussé), vous pouvez modifier votre commit:

git commit --amend 

Assurez-vous de ne pas ajouter de nouvelles modifications à la validation - ne pas utiliser -a, don n'utilisez pas git add en premier. Ensuite, vous pouvez forcer la poussée, puisque c'est un changement non-avance rapide:

git push -f 

Si quelqu'un a déjà tiré le commit avec le nom incorrect ... ce ne sera probablement pas en fait désordre-les, depuis la fusion avec quelque chose contenant le commit original devrait être facile; les correctifs sont les mêmes. Cependant, si cette personne a déjà repoussé à votre repo, ils poussent cette fusion - avec le commit original d'un côté de celui-ci. Type de défaites dans le but de vous renommer si vous vous retrouvez avec les deux noms dans le repo. (Ceci est exactement le problème que j'ai décrit dans mon commentaire sur la réponse de l'OP.)

+1

-f n'est pas dans la page de manuel pour pousser. Que fait le -f en particulier? Quelque chose comme checkout -f? –

+0

@Jonathan: Oui c'est le cas. C'est dans l'instruction d'utilisation que '[-f | --force] ', et il est décrit sous les deux noms courts et longs environ dix vers le bas dans la section des options. Il fait ce que j'ai suggéré dans la réponse: les poussées non-rapides sont normalement rejetées, mais cela le force à être accepté. – Cascabel

+0

Je retire ma question - c'est définitivement juste là.Je dois perdre la tête. Peut-être que je regardais la mauvaise page de manuel haha. –

3

doux I figured it out:

git commit -a --amend 
git pull 
git push 

Ne hésitez pas à répondre, si vous avez une meilleure façon que je vais à vous marquer correcte.

+2

Cela ne changera pas réellement la validation d'origine. Le 'git pull' récupère la position d'origine de' origin/master', qui est 'master @ {1}', le commit d'origine. Il le fusionne ensuite. La fusion se passe bien, parce que les deux parties ont fait exactement le même changement; la seule différence est le nom et la date sur le commit. Les deux commits sont toujours là. – Cascabel

+1

(Et vous n'avez probablement pas besoin du '-a', à moins que vous ne commettiez des changements supplémentaires ainsi que de changer le nom ...) – Cascabel

+0

@Jefromi: Merci pour vos commentaires. Oui, je n'ai probablement pas besoin de l'interrupteur '-a'. –

3

Comme il est indiqué here, vous pouvez faire

git commit --amend --author="Author Name <[email protected]>" 
git push -f 
Questions connexes