Jak usunąć niezakłócone wychodzące zatwierdzenie w programie Visual Studio?


116

Przypadkowo wprowadziłem etapową zmianę w nowej gałęzi w programie Visual Studio 2017 do mojego lokalnego repozytorium. Nie został przesłany do zdalnego repozytorium. Chcę się go pozbyć, ale nie mogę znaleźć na to sposobu. Przeniosłem się z lokalnego oddziału głównego do nowego oddziału. Następnie usunąłem nowy oddział. Ale Wychodzące Commits nadal to pokazują. Jak go usunąć lub przywrócić?

wprowadź opis obrazu tutaj


Dzięki za to pytanie, miałem to samo pytanie
Imran Rizvi

Odpowiedzi:


179

Otwórz kartę historii w Team Explorer z kafelka Oddziały (kliknij prawym przyciskiem myszy swoją gałąź). Następnie w historii kliknij prawym przyciskiem myszy zatwierdzenie przed tym, którego nie chcesz wypychać, wybierz Resetuj. To przeniesie gałąź z powrotem do tego zatwierdzenia i powinno pozbyć się dodatkowego zatwierdzenia, które zrobiłeś. Aby zresetować się przed danym zatwierdzeniem, musisz więc wybrać jego rodzica.

W zależności od tego, co chcesz zrobić ze zmianami, wybierz trudne , co pozbyje się ich lokalnie. Lub wybierz Miękkie który będzie cofnąć popełnić ale pozostawi swój katalog roboczy ze zmianami w twojej wyrzuconych popełnić.


22
Warto pogrubić tę część, w której ** musisz wybrać RESET na RODZICIE zepsutego zatwierdzenia ** - dziwacznie VS2017, zaraz po wykonaniu zatwierdzenia, oferuje opcję menu, która wykonuje reset docelowy po zatwierdzeniu właśnie to zrobiłeś (brak działania) - Spędziłem kilka minut zanim znalazłem Twój post i zdałem sobie sprawę, że powinienem był zresetować [To] zatwierdzenie rodzica .. Opcja menu „Resetuj” jest trochę źle sformułowana - brzmi tak zresetuj określone zatwierdzenie == sugerując, że powinno być używane w tym zatwierdzeniu. Gdyby to był Reset To myślę, że zrozumiałbym to szybciej
Caius Jard

1
(@JH) Dzięki za odpowiedź. .. atCJ Dziękuję za komentarz. atJH Dziękuję za odważenie tej części ... u każdego ... to ta część, na której utknąłem ... i mam na myśli utknąłem. #freedom
granadaCoder

Nazewnictwo jest zgodne z tym, jak git wywołuje polecenie. Jeśli edytowałeś pliki, te również zostaną zresetowane. Jeśli masz pliki przemieszczane, one również zostaną zresetowane. Dlatego też ostatni zatwierdzenie jest resetowane. Resetuje się do tego zatwierdzenia.
jessehouwing

1
Warto wiedzieć. Dzięki za odpowiedź
Rob C

Dzięki Alot It Helpssss
Ashish Kamble

70

Nie mogłem znaleźć ani jednej dobrej odpowiedzi, która pomogłaby mi pozbyć się tego problemu.

Powiedzmy, że nazwa oddziału, w której przypadkowo wprowadziłeś zmiany, to master. Wykonanie czterech prostych kroków okazało się dla mnie światem:

  1. Idź do oddziałów
  2. Wybierz lub utwórz dowolny oddział inny niż master
  3. Usuń wersję lokalną / roboczą master
  4. Przełącz się na master z remotes/origin

5
To jest odpowiedź, która działa, nie musisz naciskaćrevert
sojim

2
to działa, ale utkniesz, gdy chcesz tylko niektórych (nie wszystkich) konkretnych zatwierdzeń z zatwierdzeń wychodzących.
KatariaA,

1
Właśnie otrzymałem kilka głosów przeciw. Komentarze byłyby świetne.
Chaos Legion

1
Pracuje. Czyste, szybkie i proste rozwiązanie.
Tom Tom

2
OMG DZIĘKUJĘ! Nigdy nie potrzebowałem 45 minut, aby cofnąć zmiany, aż do dzisiejszego wieczoru. Twój komentarz ratuje dzień.
PBJ

3

Zakładając, że przesłałeś najnowsze zmiany na serwer:

  1. Zamknij program Visual Studio i usuń lokalną kopię projektu
  2. Otwórz program Visual Studio, przejdź do zakładki Team Explorer, kliknij Zarządzaj połączeniami. (wtyczka)
  3. Kliknij strzałkę listy rozwijanej obok Zarządzaj połączeniami, Połącz z projektem
  4. Wybierz projekt, potwierdź lokalną ścieżkę i kliknij przycisk Połącz.

Po ponownym otwarciu projektu zarówno zatwierdzenia, jak i zmiany powinny wynosić zero.


3

TL; DR:

Użyj git reset --soft HEAD~w cmd z folderu .sln


Stałem przed tym dzisiaj i byłem przytłoczony, że VSCodesugeruje coś takiego, podczas gdy jego starszy brat Visual Studionie.

Większość odpowiedzi była pomocna; Gdybym miał więcej zatwierdzeń, które zostały wykonane wcześniej, utrata ich wszystkich byłaby frustrująca. Co więcej, jeśli VSCodezrobi to w pół sekundy, nie powinno być skomplikowane.

Jedynie odpowiedź jessehouwinga była najbliższa prostemu rozwiązaniu.


Zakładając, że niepożądane zmiany były ostatnimi, które miały miejsce, oto jak to rozwiązałem:

Idź do Team Explorer-> Sync. Tam zobaczysz wszystkie zatwierdzenia. Naciśnij Actionsmenu iOpen Command Prompt

przykład rozwiązania niepożądanego popełnienia błędu

Pojawi się okno cmd, napisz git reset --soft HEAD~. Jeśli istnieje wiele niepożądanych zatwierdzeń, dodaj kwotę po ~(tj. git reset --soft HEAD~5)


(Jeśli nie używasz git, sprawdź potoczne użycie).

Mam nadzieję, że to pomoże i mam nadzieję, że w następnej wersji zespół VS doda to wbudowane


0

Przejdź do zakładki Team Explorer, a następnie kliknij Branches. W oddziałach wybierz swój oddział z pilotów / pochodzenia. Na przykład chcesz zresetować gałąź główną. Kliknij prawym przyciskiem myszy gałąź główną w pilotach / źródłach, a następnie wybierz Resetuj, a następnie kliknij Usuń zmiany. Spowoduje to zresetowanie lokalnego oddziału i usunięcie wszystkich lokalnie zatwierdzonych zmian.


0

Spróbuj ponownie oprzeć lokalną gałąź główną na zdalnej / źródłowej gałęzi głównej i rozwiąż wszelkie konflikty w procesie.


-1

Masz tutaj 2 opcje, aby to zrobić: odrzucić wszystkie wychodzące zatwierdzenia LUB cofnąć określone zatwierdzenie.

1- Odrzuć wszystkie wychodzące commity:

Aby odrzucić wszystkie wychodzące zatwierdzenia Na przykład, jeśli masz lokalny oddział o nazwie master ze zdalnego oddziału, możesz:

1- Zmień nazwę lokalnego oddziału z głównego na dowolną, aby można było go usunąć. 2- Usuń gałąź o zmienionej nazwie. 3 - utwórz nową gałąź od mistrza

Więc teraz masz nową gałąź bez twoich zatwierdzeń ...

2- Cofnij określone zatwierdzenie: Aby cofnąć określone zatwierdzenie, musisz cofnąć niepotrzebne przez:

1- Kliknij dwukrotnie niepotrzebne zatwierdzenie. Kliknij dwukrotnie niepotrzebne zatwierdzenie. 2 - Kliknij przywróć. Kliknij przywróć

Ale FYI, przywrócone zatwierdzenie pojawi się w historii twoich zatwierdzeń wraz z przywróceniem zatwierdzenia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.