Sourcetree - cofnij nieprzypisane zobowiązania

208

Używam Sourcetree dla Windows do repozytorium git i chciałbym cofnąć niepodawane zatwierdzenie.

Czy to jest możliwe? Jeśli zrobię „przywróć zatwierdzenie”, utworzy drugie zatwierdzenie, które cofa pierwsze zatwierdzenie, ale nie chcę, aby pierwsze zatwierdzenie pojawiło się w mojej kontroli źródła.

Mogę również usunąć moje lokalne repozytorium i pobrać je ponownie bez mojego lokalnego zatwierdzenia, ale może jest inny sposób?

deimos1988
źródło
Napisałem szczegółowy artykuł ze zrzutami ekranu. Dzielę się
Rahul Soni

Odpowiedzi:

345
  1. Kliknij prawym przyciskiem myszy zatwierdzenie, które chcesz zresetować (nie ten, który chcesz usunąć!)
  2. Wybierz „Zresetuj master do tego zatwierdzenia”
  3. Wybierz „Miękki” reset.

Miękki reset zachowa lokalne zmiany.

Źródło: https://answers.atlassian.com/questions/153791/how-should-i-remove-push-commit-from-sourcetree

Edytować

About git revert: To polecenie tworzy nowe zatwierdzenie, które cofnie inne zatwierdzenia. Np. Jeśli masz zatwierdzenie, które dodaje nowy plik, git revertmożna go użyć do zatwierdzenia, które usunie nowy plik.

Informacje o zastosowaniu miękkiego resetu: Załóżmy, że masz commits Ado E( A---B---C---D---E) i chcesz usunąć ostatni commit ( E). Następnie możesz wykonać miękki reset, aby zatwierdzić D. Przy miękkim resecie zatwierdzenie Ezostanie usunięte z git, ale lokalne zmiany zostaną zachowane. Jest więcej przykładów w dokumentacji git reset .

nightlyop
źródło
34
Lub jeśli pracujesz nad oddziałem - „Zresetuj bieżący oddział do tego zatwierdzenia”
Tom Auger,
5
Tak bardzo nie rozumiem tych wyjaśnień interfejsu użytkownika ... Zresetuj bieżącą gałąź do tego zatwierdzenia tak bardzo, że nie brzmi, jakby usunęło zatwierdzenie. I skończyło się na robieniu tego, czego można oczekiwać. Resetuje moją kopię roboczą do zatwierdzenia, zamiast ją usuwać.
MrFox
Zgadzam się z @MrFox. Po zrobieniu tego zatwierdzenie, którego nie chcę, jest nadal widoczne w drzewie.
Timmmm,
@Timmmm: Czy nowe wyjaśnienie pomaga?
nightlyop
W rzeczywistości zdałem sobie sprawę, że już pchnąłem swoje zobowiązanie do github. Znalazłem artykuł, który wyjaśnia, jak „przepisać historię”, ale wydaje się, że to więcej kłopotów niż jest warte!
Timmmm
46

Jeśli wybierzesz wpis dziennika, do którego chcesz przywrócić, możesz kliknąć „Resetuj do tego zatwierdzenia”. Tej opcji należy używać tylko wtedy, gdy nie wprowadzono zmian wstecznego zatwierdzania. Jeśli martwisz się utratą zmian, możesz użyć trybu miękkiego, który pozostawi zestaw niezatwierdzonych zmian (co właśnie zmieniłeś). Za pomocą mieszanego resetuje kopię roboczą, ale zachowuje te zmiany, a dysk twardy po prostu całkowicie je usunie. Oto kilka zrzutów ekranu:

wprowadź opis zdjęcia tutaj

Muhammad Awais
źródło
3
Jeśli nadal widzisz ikonę pokazującą, że Push jest dostępny z twojego poprzedniego zatwierdzenia (który właśnie wyczyściłeś), ściągnij i Sourcetree wydaje się aktualizować interfejs użytkownika.
ChristoKiwi,
6

Jeśli chcesz usunąć zatwierdzenie, możesz to zrobić jako część interaktywnej bazy. Ale rób to ostrożnie, aby nie popsuć repozytorium.

W Sourcetree:

  1. Kliknij prawym przyciskiem zatwierdzenie, które jest starsze niż to, które chcesz usunąć, i wybierz „ Interaktywuj dzieci xxxx interaktywnie ... ”. Ten, który klikniesz, będzie twoją „bazą” i możesz wprowadzić zmiany w każdym zatwierdzeniu dokonanym po tym.
  2. W nowym oknie wybierz zatwierdzenie, którego chcesz nie było, i naciśnij przycisk „ Usuń ” u dołu lub kliknij zatwierdzenie prawym przyciskiem myszy i kliknij „ Usuń zatwierdzenie ”.
  3. Kliknij „ OK ” (lub „ Anuluj ”, jeśli chcesz przerwać).

Sprawdź ten post na blogu Atlassian, aby uzyskać więcej informacji na temat interaktywnego bazowania w Sourcetree.

jna
źródło
Oto odpowiedź, której szukałem, działała dokładnie tak, jak trzeba.
Cliff Burton
0

Jeśli jesteś w innej gałęzi, najpierw musisz „sprawdzić to zatwierdzenie”, aby zatwierdzić, którą chcesz usunąć, a dopiero potem „zresetuj bieżącą gałąź do tego zatwierdzenia”, wybierając poprzednie zatwierdzenie wrighta, zadziała.

pomaranga
źródło