Éditer un message de propagation dans les fenêtres SourceTree (déjà poussé à distance)

comment modifier un message de propagation 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é à Bitbucket.
  • c'est un dépôt 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 re-commettre eux en tout temps.
  • Je ne veux cependant pas perdre toute modification de code jamais faite.

résultat:

  • comme cela semble impossible pour le moment d'après vos commentaires et réponses, je vais créer un nouveau dépôt et tout recommencer. Merci à tous pour votre aide!
162
demandé sur Robert Harvey 2013-07-12 01:57:59

3 réponses

Voici les étapes pour éditer le message de propagation d'une propagation précédente ( qui est pas le plus récent commit ) en utilisant SourceTree Pour Windows version 1.5.2.0 :

Étape 1

sélectionnez le commit immédiatement avant le commit que vous voulez éditer. Par exemple, si je veux éditer le commit avec un message "FOOBAR!"puis j'ai besoin de pour sélectionner le commit qui vient juste avant:

Selecting commit before the one that I want to edit.

l'Étape 2

faites un clic droit sur la propagation sélectionnée et cliquez sur Rebase children...interactively :

Selecting "Rebase children interactively".

Étape 3

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

Select the commit that you want to edit.

Étape 4

édite le message de propagation, puis clique 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 le rebase:

Click OK to finish.

Étape 6

à ce point, vous aurez besoin de forcer vos nouveaux changements puisque vous avez rebasé engage ce que vous avez déjà poussé. Cependant, la version 1.5.2.0 de SourceTree for Windows ne vous permet pas de forcer l'interface graphique, donc vous aurez besoin d'utiliser Git en ligne de commande, de toute façon pour le faire.

cliquez sur Terminal à partir de L'interface graphique pour ouvrir un terminal.

Click Terminal

Étape 7

à Partir du terminal de force de pousser avec la commande suivante,

git push origin <branch> -f

<branch> est le nom de la branche que vous souhaitez faire, et -f signifie à force de le pousser. La poussée de force écrasera vos commits sur votre distance repo, mais c'est OK dans votre cas puisque vous avez dit que vous n'êtes pas partager votre pension avec d'autres personnes.

C'est ça! Vous avez terminé!

335
répondu 2014-04-23 08:42:22

Sur La Version 1.9.6.1. For UnPushed commit.

  1. cliquez sur description d'un engagement antérieur
  2. Cliquez sur valider icône
  3. entrez un nouveau message de propagation, et choisissez " Ammend dernière propagation " dans la liste déroulante des options de propagation.
  4. transmettez votre message.
21
répondu Franc 2017-01-05 11:32:12

mise à Jour

Note: Cette réponse a été écrite à l'origine en ce qui concerne les anciennes versions de SourceTree pour Windows, et est maintenant périmée.

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

comme je suis sous Windows, je n'ai pas d'outil en ligne de commande et je ne sais pas comment m'en servir :( Est-ce la seule façon de régler cela? L'interface graphique ne couvre pas toutes les fonctions du git? - Affiche Originale

concernant Git GUIs, non, ils ne couvrent pas toutes les fonctions de Git . Ils ne sont même pas proche . je vous suggère de vérifier une des réponses dans Comment modifier un message de propagation incorrect dans Git? , Git est suffisamment flexible pour qu'il y ait plusieurs solutions...à partir de la ligne de commande.

SourceTree pourrait en fait venir avec le shell bash de msysgit déjà, ou il pourrait être en mesure d'utiliser le shell de commande standard de Windows. Dans tous les cas, vous ouvrez le formulaire SourceTree en cliquant sur le bouton du Terminal:

enter image description here

vous avez mis quel terminal SourceTree utilise (bash ou Windows) ici:

enter image description here

Une manière de résoudre le problème en SourceTree

cela dit, Voici une façon de le faire en 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 dire réinitialisation, qui est une opération différente en Git), alors voici le étapes:

  1. effectuez une réinitialisation dure de SourceTree à la mauvaise propagation en cliquant avec le bouton droit de la souris et en sélectionnant Reset current branch to this commit , et en sélectionnant l'option de réinitialisation dure à partir du menu déroulant. enter image description here
  2. cliquez sur le bouton Commit, puis
  3. cliquez sur la case en bas qui indique "modifier la dernière propagation". enter image description here
  4. faire les changements que vous voulez au message, puis cliquez sur valider de nouveau. Voila!

concernant ce commentaire :

si ce n'est pas possible parce qu'il est déjà poussé à Bitbucket, Je n'hésiterais pas à créer un nouveau dépôt et recommencer.

est-ce que cela signifie que vous êtes la seule personne qui travaille sur le repo? C'est important parce qu'il n'est pas trivial de changer l'histoire d'un repo (comme en modifiant un commit) sans causer de problèmes à vos collaborateurs. Cependant, en supposant que vous êtes la seule personne qui travaille sur le repo, alors la prochaine chose que vous voudriez faire serait de forcer votre historique changé à la télécommande.

soyez conscient, cependant, que parce que vous avez fait une réinitialisation dure à la propagation défectueuse, alors la poussée forcée vous fait perdre tout le travail qui vient après elle auparavant. Si c'est bon, alors vous pourriez avoir besoin d'utiliser la commande suivante sur la ligne de commande pour faire la force de pousser, parce que je n'ai pas pu trouver une option pour le faire dans SourceTree:

git push remote-repo head -f

cela suppose aussi que BitBucket vous permettra de forcer push à une pension.

vous devriez vraiment apprendre à utiliser Git à partir de la ligne de commande de toute façon, il va vous rendre plus compétent en 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, clic droit pour copier, et clic droit à nouveau coller. C'est assez rapide.

11
répondu Community 2017-05-23 12:18:36