É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!
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:
l'Étape 2
faites un clic droit sur la propagation sélectionnée et cliquez sur 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!":
Étape 4
édite le message de propagation, puis clique 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 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.
Étape 7
à Partir du terminal de force de pousser avec la commande suivante,
git push origin <branch> -f
où <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é!
Sur La Version 1.9.6.1. For UnPushed commit.
- cliquez sur description d'un engagement antérieur
- Cliquez sur valider icône
- entrez un nouveau message de propagation, et choisissez " Ammend dernière propagation " dans la liste déroulante des options de propagation.
- transmettez votre message.
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:
vous avez mis quel terminal SourceTree utilise (bash ou Windows) ici:
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:
- 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. - cliquez sur le bouton Commit, puis
- cliquez sur la case en bas qui indique "modifier la dernière propagation".
- 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.