web-dev-qa-db-fra.com

SourceTree - supprimer les poussées en attente

Comment supprimer les validations en attendant d'être poussé vers la télécommande?

2 pushes waiting

Ma situation est que ces commits (changements) mis en file d'attente ont déjà été poussés (plus de soufflet) et maintenant le serveur refuse d'accepter ceux-ci car ils sont derrière le HEAD.

J'ai essayé de réinitialiser un autre commit, mais quand je reviens à HEAD, les push réapparaissent à nouveau.

Cliquer sur Référentiel> Actualiser l'état à distance n'aidera pas, cela a en fait ajouté le 2e Push en attente :)

PS: Je m'excuse pour ma terminologie, je suis assez nouveau pour git.

.

Mise à jour 1

Les problèmes ont commencé lorsque je validais feature2 sur la branche principale. Je n'ai pas le droit de m'engager là-bas, donc ça s'est coincé. Ensuite, je me suis de nouveau engagé dans ma branche personnelle, ce qui était OK. Ensuite, j'ai obtenu un commit en attente, à ne jamais être poussé, même si je sélectionne la bonne branche (personnelle) lorsque je clique sur Push.

enter image description here

19
teejay

Les validations Git forment un graphe de validation. Les branches ne sont que des pointeurs nommés pour les validations dans ce graphique.

Cela étant, votre question peut être reformulée comme suit:

Ma branche locale maître pointe vers un commit différent de celui du maître distant branche. Comment puis-je faire en sorte que ma branche locale maître pointe vers le même commit que le maître distant branche?

Il y a deux façons d'y parvenir. Déplacez la branche distante (git Push) ou déplacer la branche locale ( git reset ). Comme vous l'avez dit, vous ne pouvez pas pousser vers la branche maître distante , donc l'option 1 est hors de la table, ce qui laisse l'option 2.

Notez que reset fonctionne sur la branche de paiement en cours1 vous devez donc d'abord vous assurer que vous êtes actuellement sur la branche master , puis déplacer cette branche vers le même commit que la remote branche principale .

git checkout master               <--- make sure you're on the master branch
git reset --hard Origin/master    <--- put your master branch on the same commit as Origin/master

Maintenant que master et Origin/master sont sur le même commit, il y a devrait pas s'engager à pousser.


  1. reset fonctionne sur le HEAD actuel, mais pour cette explication, il est plus facile de le considérer comme fonctionnant sur des branches. Pour plus d'informations, consultez cette question: Qu'est-ce que HEAD in Git? .
29
R0MANARMY

Avez-vous essayé en faisant: git reset --hard HEAD~1? De cette façon, vous aurez à nouveau la tête sur votre dépôt local. Sinon, j'ai vu une page amusante qui pourrait être utile: http://ibrokegit.com/

La plupart du temps, ces problèmes doivent être résolus en utilisant la ligne de commande, au lieu de l'interface graphique (dans ce cas, SourceTree).

J'espère que ça aide!

3
facundofarias