Voici les étapes pour modifier le message de validation d'un commit précédent ( qui n'est pas le commit le plus récent ) à l'aide de SourceTree pour Windows version 1.5.2.0 :
Étape 1
Sélectionnez le commit immédiatement avant le commit que vous souhaitez modifier. Par exemple, si je veux modifier le commit avec le message "FOOBAR!" alors je dois sélectionner le commit qui vient juste avant:
Étape 2
Cliquez avec le bouton droit sur le commit sélectionné et cliquez sur Rebase children...interactively
:
Étape 3
Sélectionnez le commit que vous souhaitez modifier, puis cliquez Edit Message
en bas. Dans ce cas, je sélectionne le commit avec le message "FOOBAR!":
Étape 4
Modifiez le message de validation, puis cliquez sur OK
. Dans mon exemple, j'ai ajouté "SHAZBOT! SKADOOSH!"
Étape 5
Lorsque vous revenez à la fenêtre de rebase interactive, cliquez sur OK
pour terminer le rebase:
Étape 6
À ce stade, vous devrez forcer vos nouvelles modifications car vous avez rebasé les validations que vous avez déjà poussées. Cependant, la version 1.5.2.0 actuelle de SourceTree pour Windows ne vous permet pas de forcer la transmission via l'interface graphique, vous devrez donc utiliser Git à partir de la ligne de commande de toute façon pour ce faire.
Cliquez sur Terminal
dans l'interface graphique pour ouvrir un terminal.
Étape 7
Depuis le terminal force-push avec la commande suivante,
git push origin <branch> -f
où <branch>
est le nom de la branche que vous souhaitez pousser et -f
signifie forcer la poussée. La poussée forcée écrasera vos validations sur votre dépôt à distance, mais c'est OK dans votre cas puisque vous avez dit que vous ne partagiez pas votre dépôt avec d'autres personnes.
C'est tout! Vous avez terminé!
Sur la version 1.9.6.1. Pour un commit non poussé.
la source
Si le message de commentaire comprend des caractères non anglais , à l'aide de la méthode fournie par user456814, ces caractères seront remplacés par des points d'interrogation. (testé sous sourcetree Ver2.5.5.0)
Je dois donc utiliser la méthode suivante.
ATTENTION : si la validation a été retirée par d'autres membres, les modifications ci-dessous peuvent provoquer un chaos pour eux.
Étape 1 : Dans la fenêtre principale de sourcetree, recherchez votre onglet repo et cliquez sur le bouton " terminal " pour ouvrir la console de commande git.
Étape 2 :
[Situation A] : la validation de cible est la dernière.
1) Dans la console de commande git, saisissez
2) Si le commit cible a été poussé à distance, vous devez pousser à nouveau de force. Dans la console de commande git, saisissez
[Situation B] : la validation de cible n'est pas la dernière.
1) Dans la console de commande git, saisissez
Il s'agit d'écraser les derniers n commits. par exemple, si vous souhaitez modifier le message avant le dernier, n est 2. Cette commande ouvrira une fenêtre vi, le premier mot de chaque ligne est " pick ", et vous changez le "pick" en " reword " pour la ligne que vous souhaitez modifier. Ensuite, saisissez
:wq
pour enregistrer et quitter cette fenêtre vi. Maintenant, une nouvelle fenêtre vi sera ouverte, dans cette fenêtre vous entrez votre nouveau message. Utilisez également:wq
pour enregistrer et quitter.2) Si le commit cible a été poussé à distance, vous devez pousser à nouveau de force. Dans la console de commande git, saisissez
Enfin : dans la fenêtre principale de sourcetree, appuyez sur
F5
pour actualiser.la source
Mettre à jour
Remarque: cette réponse a été écrite à l'origine en ce qui concerne les anciennes versions de SourceTree pour Windows et est désormais obsolète.
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
En ce qui concerne les interfaces graphiques Git, non, elles ne couvrent pas toutes les fonctions de Git . Ils ne s'approchent même pas . Je vous suggère de vérifier l'une des réponses dans Comment puis-je modifier un message de validation incorrect dans Git?, Git est suffisamment flexible pour qu'il existe plusieurs solutions ... à partir de la ligne de commande.
SourceTree peut déjà être fourni avec le shell bash msysgit, ou il peut être en mesure d'utiliser le shell de commande Windows standard. Dans les deux cas, vous l'ouvrez depuis SourceTree en cliquant sur le bouton Terminal:
Vous définissez ici quel terminal SourceTree utilise (bash ou Windows):
Une façon de résoudre le problème dans SourceTree
Cela étant dit, voici une façon de le faire dans SourceTree. Puisque vous avez mentionné dans les commentaires que cela ne vous dérange pas de "revenir au commit défectueux" (par lequel je suppose que vous voulez réellement réinitialiser, ce qui est une opération différente dans Git), voici les étapes:
Reset current branch to this commit
, puis en sélectionnant l'option de réinitialisation matérielle dans le menu déroulant.Concernant ce commentaire :
Est-ce à dire que vous êtes la seule personne à travailler sur le repo? Ceci est important car il n'est pas anodin de modifier l'historique d'un dépôt (comme en modifiant un commit) sans causer de problèmes à vos collaborateurs. Cependant, en supposant que vous êtes la seule personne à travailler sur le référentiel, la prochaine chose que vous voudriez faire est de forcer le transfert de votre historique modifié vers la télécommande.
Cependant, sachez que, parce que vous avez effectué une réinitialisation matérielle du commit défectueux, une poussée forcée vous fait perdre tout le travail qui l'a suivi précédemment. Si cela vous convient, vous devrez peut-être utiliser la commande suivante sur la ligne de commande pour effectuer la poussée forcée, car je n'ai pas trouvé d'option pour le faire dans SourceTree:
Cela suppose également que BitBucket vous permettra de forcer la poussée vers un dépôt.
Cependant, vous devriez vraiment apprendre à utiliser Git à partir de la ligne de commande, cela vous rendra plus compétent dans Git. #ProTip, utilisez msysgit et activez le mode Édition rapide dans les propriétés du terminal, de sorte que vous pouvez double-cliquer pour mettre en surbrillance une ligne de texte, cliquer avec le bouton droit pour copier et cliquer à nouveau avec le bouton droit pour coller. C'est assez rapide.
la source