Come rimuovere un commit in uscita non premuto in Visual Studio?


115

Ho accidentalmente inviato una modifica graduale in un nuovo ramo in Visual Studio 2017 al mio repository locale. Non è stato inviato al repository remoto. Voglio sbarazzarmene ma non riesco a trovare un modo per farlo. Ho ribasato dal ramo principale locale al nuovo ramo. Quindi ho cancellato il nuovo ramo. Ma Outgoing Commits lo mostra ancora. Come eliminarlo o ripristinarlo?

inserisci qui la descrizione dell'immagine


Grazie per questa domanda, ho avuto la stessa domanda
Imran Rizvi

Risposte:


179

Apri la scheda Cronologia in Team Explorer dal riquadro Rami (fai clic con il pulsante destro del mouse sul ramo). Quindi nella cronologia fai clic con il pulsante destro del mouse sul commit prima di quello che non vuoi spingere, scegli Ripristina. Ciò riporterà il ramo a quel commit e dovrebbe eliminare il commit extra che hai fatto. Per resettare prima di un dato commit devi quindi selezionare il suo genitore.

A seconda di cosa vuoi fare con le modifiche, scegli duro , che le eliminerà localmente. Oppure scegli soft che annullerà il commit ma lascerà la tua directory di lavoro con le modifiche nel commit scartato.


22
Vale la pena mettere in grassetto la parte in cui ** devi optare per RESET sul GENITORE del commit incasinato ** - stranamente VS2017, subito dopo aver fatto un commit, ti offre un'opzione di menu che esegue il reset targetd al commit hai appena fatto (un no-op) - Ho trascorso alcuni minuti prima di trovare il tuo post e ho capito che avrei dovuto Reimpostare [A] il commit genitore .. L'opzione di menu "Reimposta" è formulata leggermente male - sembra che lo farà resettare un particolare commit == implicando che dovrebbe essere usato su quel commit. Se fosse stato Reset To credo l'avrei capito più velocemente
Caius Jard

1
(@ JH) Grazie per la risposta. .. atCJ Grazie per il commento. atJH Grazie per aver audace quella parte ... atEverybody .... quella è la parte su cui ero bloccato ... e intendo bloccato. #freedom
granadaCoder

La denominazione è in linea con il modo in cui git chiama il comando. Se hai modificato dei file, anche quelli verranno ripristinati. Se disponi di file in fasi, verranno ripristinati anche loro. Ecco perché c'è anche un reset sull'ultimo commit. Si ripristina su quel commit.
jessehouwing

1
Utile sapere. Grazie per la risposta
Rob C

Grazie mille Helpssss
Ashish Kamble

70

Non sono riuscito a trovare una sola buona risposta che mi abbia aiutato a sbarazzarmi di questo problema.

Supponiamo che il nome del ramo a cui hai accidentalmente commesso modifiche sia master. Seguendo quattro semplici passaggi per me si è rivelato un mondo:

  1. Vai a Filiali
  2. Scegli o crea un ramo diverso da master
  3. Elimina la versione locale / dell'area di lavoro di master
  4. Passa al master da remotes/origin

5
Questa è la risposta che funziona, non devi premere ilrevert
sojim

2
funziona, ma sei bloccato quando vuoi solo alcuni (non tutti) commit specifici dai commit in uscita.
KatariaA

1
Ho appena ricevuto un paio di voti negativi. I commenti sarebbero stati fantastici.
Chaos Legion

1
Lavori. Soluzione pulita, veloce e semplice.
Tom Tom

2
OMG GRAZIE! Non ho mai impiegato 45 minuti per annullare le modifiche, fino a stasera. Il tuo commento salva la giornata.
PBJ

3

Supponendo che tu abbia inviato le modifiche più recenti al server:

  1. Chiudi Visual Studio ed elimina la copia locale del progetto
  2. Apri Visual Studio, vai alla scheda Team Explorer, fai clic su Gestisci connessioni. (spina)
  3. Fare clic sulla freccia del menu a discesa accanto a Gestisci connessioni, Connetti a un progetto
  4. Seleziona il progetto, conferma il percorso locale e fai clic sul pulsante Connetti.

Una volta riaperto il progetto, sia i commit che le modifiche dovrebbero essere zero.


2

TL; DR:

Usa git reset --soft HEAD~nel cmd dalla cartella .sln


Lo stavo affrontando oggi ed ero sopraffatto dal fatto che VSCodesuggerisse una cosa del genere, mentre il fratello maggiore Visual Studiono.

La maggior parte delle risposte sono state utili; se ho più commit che sono stati fatti prima, perderli tutti sarebbe frustrante. Inoltre, se lo VSCodefa in mezzo secondo, non dovrebbe essere complesso.

Solo la risposta di jessehouwing era la più vicina a una soluzione semplice.


Supponendo che il commit indesiderato fosse l'ultimo ad accadere, ecco come l'ho risolto:

Vai a Team Explorer-> Sync. Lì vedresti tutti i commit. Premi il Actionsmenu a discesa eOpen Command Prompt

esempio di commit indesiderato risolto

Avrai la finestra di cmd richiesta, lì scrivi git reset --soft HEAD~. Se ci sono più commit indesiderati, aggiungi l'importo dopo il ~(ie git reset --soft HEAD~5)


(Se non stai usando git, controlla l'uso colloquiale).

Spero che possa essere d'aiuto e spero che nella prossima versione VS team lo aggiungerà integrato


0

Vai alla scheda Team Explorer, quindi fai clic su Branches. Nei rami seleziona il tuo ramo da telecomandi / origine. Ad esempio, vuoi ripristinare il tuo ramo principale. Fare clic con il pulsante destro del mouse sul ramo principale in telecomandi / origine, quindi selezionare Ripristina, quindi fare clic su Elimina modifiche. Ciò ripristinerà il tuo ramo locale e rimuoverà tutte le modifiche commesse localmente.


0

Prova a rebase il tuo ramo principale locale sul tuo ramo principale remoto / di origine e risolvi eventuali conflitti nel processo.


-1

Hai 2 opzioni qui per farlo o per scartare tutti i tuoi commit in uscita OPPURE per annullare un commit specifico.

1- Elimina tutti i tuoi commit in uscita:

Per scartare tutti i tuoi commit in uscita Ad esempio se hai un ramo locale chiamato master dal ramo remoto, puoi:

1- Rinomina il tuo ramo locale da master a qualsiasi cosa in modo da poterlo rimuovere. 2- Rimuovere il ramo rinominato. 3- crea un nuovo ramo dal master

Quindi ora hai un nuovo ramo senza i tuoi commit ..

2- Annulla commit specifico: per annullare un commit specifico devi ripristinare il non necessario da:

1- Fare doppio clic sul commit non necessario. Fare doppio clic sul commit non necessario 2- Fare clic su ripristina Fare clic su Ripristina

Ma per tua informazione, il commit ripristinato apparirà nella cronologia dei tuoi commit con il commit ripristinato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.