Mise à jour
Remarque : cette réponse a été rédigée à l'origine pour des versions plus anciennes de SourceTree pour Windows, et n'est plus d'actualité.
Voir ma nouvelle réponse pour la version actuelle de SourceTree pour Windows, 1.5.2.0 . Je laisse cette réponse derrière moi à des fins historiques.
Réponse originale
Comme je suis sous Windows, je n'ai pas d'outil en ligne de commande et je ne sais pas comment en utiliser un :( Est-ce le seul moyen de régler ce problème ? L'interface graphique ne couvre pas toutes les fonctions de git ? - Affiche originale
En ce qui concerne les interfaces graphiques de Git, non, ils ne couvrent pas toutes les fonctions de Git . Ils ne s'approchent même pas . Je vous suggère de consulter l'une des réponses dans Comment puis-je modifier un message de livraison incorrect dans Git ? Git est suffisamment flexible pour qu'il existe de multiples solutions... à partir de la ligne de commande.
Il se peut que SourceTree soit déjà livré avec l'interpréteur de commandes msysgit bash, ou qu'il soit capable d'utiliser l'interpréteur de commandes standard de Windows. Dans tous les cas, vous l'ouvrez à partir de SourceTree en cliquant sur le bouton Terminal :
Vous définissez le terminal que SourceTree utilise (bash ou Windows) ici :
Une façon de résoudre le problème dans SourceTree
Ceci étant dit, voici une façon de le faire dans SourceTree. Puisque vous avez mentionné dans les commentaires si cela ne vous dérange pas de "revenir au commit défectueux" (je suppose que vous voulez dire réinitialiser, ce qui est une opération différente dans Git), alors voici les étapes :
- Faites un hard reset dans SourceTree sur le mauvais commit en faisant un clic droit dessus et en sélectionnant
Reset current branch to this commit
et sélectionnez l'option de réinitialisation matérielle dans la liste déroulante.
- Cliquez sur le bouton Commit, puis
- Cliquez sur la case à cocher en bas qui dit "Modifier le dernier commit".
- Apportez les modifications que vous souhaitez au message, puis cliquez à nouveau sur Commit. Voilà !
Concernant ce commentaire :
si ce n'est pas possible parce qu'il est déjà poussé vers Bitbucket, cela ne me dérangerait pas de créer un nouveau dépôt et de recommencer.
Cela signifie-t-il que vous êtes la seule personne à travailler sur le dépôt ? Ceci est important car il n'est pas trivial de modifier l'historique d'un repo (par exemple en modifiant un commit) sans causer de problèmes à vos collaborateurs. Cependant, en supposant que vous êtes la seule personne à travailler sur le dépôt, la prochaine chose que vous voudriez faire est de forcer le transfert de l'historique modifié vers le dépôt distant.
Soyez conscient, cependant, que parce que vous avez fait un hard reset sur le commit défectueux, alors le force pushing vous fait perdre tout le travail qui est venu après lui précédemment. Si cela vous convient, vous devrez peut-être utiliser la commande suivante en ligne de commande pour effectuer le forçage, car je n'ai pas trouvé d'option pour le faire dans SourceTree :
git push remote-repo head -f
Cela suppose également que BitBucket vous permette de forcer le push vers un repo.
Vous devriez vraiment apprendre à utiliser Git à partir de la ligne de commande de toute façon, cela vous rendra plus compétent dans Git. #ProTip, utilisez msysgit et activez le mode d'édition rapide dans les propriétés du terminal, de sorte que vous pouvez double-cliquer pour mettre en évidence une ligne de texte, faire un clic droit pour copier, et un autre clic droit pour coller. C'est assez rapide.