Comment supprimer un commit sortant non poussé dans Visual Studio?


115

J'ai accidentellement poussé une modification par étapes dans une nouvelle branche de Visual Studio 2017 vers mon référentiel local. Il n'a pas été poussé vers le référentiel distant. Je veux m'en débarrasser mais je ne trouve pas de moyen de le faire. J'ai rebasé de la branche principale locale à la nouvelle branche. Ensuite, j'ai supprimé la nouvelle branche. Mais les commits sortants le montrent toujours. Comment le supprimer ou le rétablir?

entrez la description de l'image ici


Merci pour cette question, j'avais la même question
Imran Rizvi

Réponses:


179

Ouvrez l'onglet Historique dans Team Explorer à partir de la vignette Branches (cliquez avec le bouton droit sur votre branche). Ensuite, dans l'historique, cliquez avec le bouton droit sur la validation avant celle que vous ne voulez pas pousser, choisissez Réinitialiser. Cela ramènera la branche à ce commit et devrait vous débarrasser du commit supplémentaire que vous avez fait. Afin de se réinitialiser avant un commit donné, vous devez donc sélectionner son parent.

En fonction de ce que vous voulez faire avec les changements, choisissez dur , ce qui les éliminera localement. Ou choisissez soft qui annulera le commit mais laissera votre répertoire de travail avec les changements de votre commit rejeté.


22
Cela vaut la peine de mettre en gras la partie où ** vous devez opter pour RESET sur le PARENT du commit foiré ** - bizarrement VS2017, juste après avoir fait un commit, vous propose une option de menu qui effectue la réinitialisation targetd au commit vous venez de le faire (un non-op) - j'ai passé quelques minutes avant de trouver votre message et de réaliser que je devrais avoir Reset [To] le commit parent .. L'option de menu étant "Reset" est légèrement mal formulée - sonne comme si réinitialiser un commit particulier == ce qui implique qu'il devrait être utilisé sur ce commit. Si c'était Reset To, je pense que je l'aurais compris plus vite
Caius Jard

1
(@JH) Merci pour la réponse. .. atCJ Merci pour le commentaire. atJH Merci d'avoir audacieux cette partie ... atEverybody .... c'est la partie sur laquelle j'étais coincé ... et je veux dire coincé. #freedom
granadaCoder

La dénomination correspond à la manière dont git appelle la commande. Si vous avez modifié des fichiers, ceux-ci seront également réinitialisés. Si vous avez des fichiers intermédiaires, ils seront également réinitialisés. C'est pourquoi il y a également une réinitialisation sur le dernier commit. Il réinitialise ce commit.
jessehouwing

1
Utile à savoir. Merci pour la réponse
Rob C

Merci beaucoup, ça aide
Ashish Kamble

70

Je n'ai pas trouvé une seule bonne réponse qui m'a aidé à me débarrasser de ce problème.

Supposons que le nom de la branche sur laquelle vous avez commis des modifications accidentellement est master. Suivre quatre étapes simples s'est avéré être un monde pour moi:

  1. Aller aux succursales
  2. Choisissez ou créez une branche autre que master
  3. Supprimer la version locale / de l'espace de travail de master
  4. Passer au maître de remotes/origin

5
C'est la réponse qui fonctionne, vous n'avez pas à pousser lerevert
sojim

2
cela fonctionne, mais vous êtes bloqué lorsque vous ne voulez que certains commits spécifiques (pas tous) des commits sortants.
KatariaA

1
Je viens de recevoir quelques votes négatifs. Les commentaires auraient été formidables.
Chaos Legion

1
Travaux. Solution propre, rapide et simple.
Tom Tom

2
OMG MERCI! Jamais je n'ai pris 45 minutes pour annuler les changements, jusqu'à ce soir. Votre commentaire sauve la journée.
PBJ

3

En supposant que vous ayez envoyé les modifications les plus récentes sur le serveur:

  1. Fermez Visual Studio et supprimez votre copie locale du projet
  2. Ouvrez Visual Studio, accédez à l'onglet Team Explorer, cliquez sur Gérer les connexions. (prise de courant)
  3. Cliquez sur la flèche déroulante à côté de Gérer les connexions, Se connecter à un projet
  4. Sélectionnez le projet, confirmez le chemin local et cliquez sur le bouton Se connecter.

Une fois que vous avez rouvert le projet, les validations et les modifications doivent être nulles.


2

TL; DR:

Utiliser git reset --soft HEAD~dans la cmd du dossier .sln


J'y faisais face aujourd'hui et j'étais submergé que cela VSCodesuggère une telle chose, alors que ce Visual Studion'est pas le cas pour le grand frère .

La plupart des réponses ont été utiles; si j'ai plus d'engagements qui ont été faits auparavant, les perdre tous serait frustrant. De plus, si VSCodecela se fait en une demi-seconde, cela ne devrait pas être complexe.

Seule la réponse de jessehouwing était la plus proche d'une solution simple.


En supposant que le (s) commit (s) indésirable (s) était le dernier à se produire, voici comment je l'ai résolu:

Allez à Team Explorer-> Sync. Là, vous verrez tous les commits. Appuyez sur la Actionsliste déroulante etOpen Command Prompt

exemple résolu par validation indésirable

Vous aurez la fenêtre cmd invitée, là écrire git reset --soft HEAD~. S'il y a plusieurs commits indésirables, ajoutez le montant après le ~(ie git reset --soft HEAD~5)


(Si vous n'utilisez pas git, vérifiez l'utilisation familière).

J'espère que cela aidera, et j'espère que dans la prochaine version, l'équipe VS l'ajoutera intégré


0

Accédez à l'onglet Team Explorer, puis cliquez sur Branches. Dans les succursales, sélectionnez votre succursale parmi télécommandes / origine. Par exemple, vous souhaitez réinitialiser votre branche principale. Cliquez avec le bouton droit de la souris sur la branche principale dans télécommandes / origine, sélectionnez Réinitialiser, puis cliquez sur Supprimer les modifications. Cela réinitialisera votre succursale locale et supprimera toutes les modifications validées localement.


0

Essayez de rebaser votre branche principale locale sur votre branche principale distante / d'origine et résolvez tous les conflits dans le processus.


-1

Vous avez 2 options pour le faire soit pour annuler tous vos commits sortants, soit pour annuler un commit spécifique.

1- Supprimez tous vos commits sortants:

Pour supprimer tous vos commits sortants Par exemple, si vous avez une branche locale nommée master de la branche distante, vous pouvez:

1- Renommez votre branche locale de maître en n'importe quoi afin de pouvoir la supprimer. 2- Supprimez la branche renommée. 3- Créer une nouvelle branche à partir du maître

Alors maintenant, vous avez une nouvelle branche sans vos commits.

2- Annuler un commit spécifique: Pour annuler un commit spécifique, vous devez annuler le commit inutile par:

1- Double-cliquez sur le commit inutile. Double-cliquez sur le commit inutile 2- Cliquez sur revenir Cliquez sur revenir

Mais pour info, le commit rétabli apparaîtra dans l'historique de vos commits avec le commit de retour.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.