web-dev-qa-db-fra.com

Éditer un message de validation dans Windows SourceTree (déjà poussé vers distant)

Comment modifier un message de validation incorrect dans SourceTree sans toucher à la ligne de commande?

Détails supplémentaires:

  • Ce n'est pas le dernier commit.
  • Tout était déjà poussé vers Bitbucket.
  • Ceci est un référentiel privé et je suis le seul collaborateur.
  • Cela ne me dérange pas de perdre l’un des commits précédents, car je peux les réengager à tout moment.
  • Je ne veux cependant pas perdre aucune modification de code jamais faite.

Résultat:

  • Comme cela semble impossible pour le moment en fonction de vos commentaires et réponses, je vais créer un nouveau référentiel et recommencer à zéro. Merci à tous pour votre aide!
184
Community

Voici les étapes pour éditer le message de validation d'une validation précédente ( qui n'est pas la dernière validation ) en utilisant - SourceTree pour Windows version 1.5.2.:

Étape 1

Sélectionnez la validation immédiatement avant la validation que vous souhaitez modifier. Par exemple, si je veux éditer le commit avec le message "FOOBAR!" alors je dois sélectionner le commit qui vient juste avant:

Selecting commit before the one that I want to edit.

Étape 2

Faites un clic droit sur le commit sélectionné et cliquez sur Rebase children...interactively:

Selecting "Rebase children interactively".

Étape 3

Sélectionnez le commit que vous voulez éditer, puis cliquez sur Edit Message en bas. Dans ce cas, je sélectionne le commit avec le message "FOOBAR!":

Select the commit that you want to edit.

Étape 4

Editez le message de validation, puis cliquez sur OK. Dans mon exemple, j'ai ajouté "SHAZBOT! SKADOOSH!"

Edit the commit message

Étape 5

Lorsque vous revenez à la fenêtre de rebase interactive, cliquez sur OK pour terminer la rebase:

Click OK to finish.

Étape 6

À ce stade, vous devez forcer-pousser vos nouvelles modifications depuis que vous avez modifié les validations que vous avez déjà appliquées. Cependant, la version 1.5.2.0 actuelle de SourceTree pour Windows ne vous permet pas de forcer le passage au travers de l'interface graphique. Vous devez donc utiliser Git à partir de la ligne de commande pour le faire.

Cliquez sur Terminal à partir de l'interface graphique pour ouvrir un terminal.

Click Terminal

Étape 7

À partir du terminal, appuyez avec la commande suivante,

git Push Origin <branch> -f

<branch> est le nom de la branche que vous voulez pousser, et -f signifie forcer la poussée. La force Push écrasera vos commits sur votre dépôt distant, mais ce n'est pas grave dans votre cas puisque vous avez dit que vous êtes ne pas partager votre repo avec d'autres personnes.

C'est ça! Vous avez terminé!

381
user456814

Sur la version 1.9.6.1. Pour un commit non validé.

  1. Cliquez sur la description précédemment validée
  2. Cliquez sur l'icône de validation
  3. Entrez un nouveau message de validation, puis choisissez "Modifier la dernière validation" dans le menu déroulant des options de validation.
  4. Commettez votre message.
29
Franc

Mise à jour

Remarque: cette réponse a été écrite à l'origine pour les versions antérieures de SourceTree pour Windows et est maintenant obsolète.

Voir ma nouvelle réponse pour la version actuelle de SourceTree pour Windows, 1.5.2.0 . Je laisse cette réponse pour des raisons historiques.

Réponse originale

étant donné que je suis sous Windows, je n'ai ni outil de ligne de commande ni comment en utiliser un :( Est-ce le seul moyen de résoudre ce problème? L'interface graphique ne couvre pas toutes les fonctions du git? - - Affiche originale

En ce qui concerne les interfaces graphiques de Git, non, elles 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 de la section Comment 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 est peut-être déjà livré avec le shell msysgit bash ou il peut éventuellement utiliser la commande Windows standard Shell. Quoi qu'il en soit, vous l'ouvrez sous SourceTree en cliquant sur le bouton Terminal:

enter image description here

Vous définissez ici quel terminal SourceTree utilise (bash ou Windows):

enter image description here

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 incorrect" (par lequel je suppose que vous voulez en réalité dire que vous voulez réinitialiser, opération différente de celle de Git), voici les pas:

  1. Effectuez une réinitialisation matérielle dans SourceTree sur la mauvaise validation en cliquant dessus avec le bouton droit de la souris et en sélectionnant Reset current branch to this commit, puis en sélectionnant l'option de réinitialisation matérielle dans le menu déroulant. enter image description here
  2. Cliquez sur le bouton Valider, puis
  3. Cliquez sur la case en bas qui dit "Modifier le dernier commit". enter image description here
  4. Apportez les modifications souhaitées au message, puis cliquez à nouveau sur Valider. Voila!

En ce qui concerne ce commentaire :

si ce n'est pas possible parce que c'est déjà poussé vers Bitbucket, cela ne me dérangerait pas de créer un nouveau référentiel et de recommencer.

Cela signifie-t-il que vous êtes la seule personne à travailler sur le repo? Ceci est important car il n’est pas anodin de changer l’historique d’un repo (par exemple en modifiant un commit) sans causer de problèmes à vos collaborateurs. Cependant, en supposant que vous soyez la seule personne à travailler sur le référentiel, la prochaine chose à faire est de forcer la transmission de l'historique modifié à la télécommande.

Sachez cependant que, parce que vous avez effectué une réinitialisation matérielle du commit défectueux, le fait de forcer forcément vous fait perdre tout le travail qui le suit. Si cela vous convient, vous devrez peut-être utiliser la commande suivante sur la ligne de commande pour exécuter le push forcé, car je ne trouvais pas d'option pour le faire dans SourceTree:

git Push remote-repo head -f

Cela suppose également que BitBucket vous permettra de forcer le Push vers un référentiel.

De toute façon, vous devriez vraiment apprendre à utiliser Git à partir de la ligne de commande, cela vous permettra de mieux maîtriser Git. #ProTip, utilisez msysgit et activez le mode Édition rapide dans les propriétés du terminal, de sorte que vous puissiez double-cliquer pour mettre en surbrillance une ligne de texte, cliquer avec le bouton droit de la souris pour copier et à nouveau cliquer avec le bouton droit de la souris pour le coller. C'est assez rapide.

12
user456814

Si le message de commentaire contient 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.

CAUTION: si le commit a été tiré par d'autres membres, les modifications ci-dessous pourraient provoquer un chaos pour eux.

Step1: Dans la fenêtre principale de sourcetree, localisez l'onglet Repo, puis cliquez sur le bouton "terminal" pour ouvrir la console de commande git.

Step2:

[Situation A] : la validation de la cible est la dernière.

1) Dans la console de commande git, entrez

git commit --amend -m "new comment message"

2) Si le commit cible a été poussé sur à distance, vous devez pousser à nouveau par la force. Dans la console de commande git, entrez

git Push --force

[Situation B] : la validation de la cible n'est pas la dernière.

1) Dans la console de commande git, entrez

git rebase -i HEAD~n

Il consiste à écraser les derniers n commits. par exemple. si vous voulez éditer le message avant le dernier, n vaut 2. Cette commande ouvrira une fenêtre vi, le premier mot de chaque ligne est " pick ", et vous modifiez le" pick "en" reformulation "pour la ligne que vous souhaitez modifier. Ensuite, entrez :wq pour sauvegarder 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é sur à distance, vous devez pousser à nouveau par la force. Dans la console de commande git, entrez

git Push --force


Enfin: Dans la fenêtre principale de l'arbre source, appuyez sur F5 pour actualiser.

9
Hosi Golden