Jak odrzucić niezatwierdzone zmiany w SourceTree?


83

Jestem nowy w środowisku Git i używam BitBucket z SourceTree na Macu. Teraz chcę tylko odrzucić zmiany od ostatniego zatwierdzenia. Jak mam to zrobić? Nie znalazłem czegoś takiego jak „odrzuć zmiany”, a bezpośrednie pobieranie z ostatniego zatwierdzenia nie działa. Rozwiązania wykonane za pomocą GUI lub wiersza poleceń będą dobre.


masz na myśli, że chcesz cofnąć ostatnie zatwierdzenie? lub zostaw to i sprawdź poprzednie zatwierdzenie, na przykład z powodów testowych?
Mohammad AbuShady

1
@MohammadAbuShady Myślę, że odpowiedź nie brzmi. Od czasu ostatniego zatwierdzenia dokonałem kilku zmian, które chcę odrzucić. Chcę z powrotem moje ostatnie zobowiązanie.
goldfrapp04

więc masz niezatwierdzone zmiany, które chcesz cofnąć?
Mohammad AbuShady

Żadna z odpowiedzi tutaj nie pomogła mi usunąć irytującego wpisu „Niezatwierdzone zmiany” u góry mojego drzewa źródłowego. Było też zbyt wiele plików niestabilizowanych, aby je odrzucić jeden po drugim. Odpowiedź zadziałała: stackoverflow.com/questions/14075581/…
PVS

Byłem zdezorientowany opcjami menu kontekstowego po kliknięciu prawym przyciskiem myszy elementu na liście plików niestabilnych; Discard(Shift + Ctrl + R) i Remove(Ctrl + Del) Przypuszczam, Discardże cofną zmiany, jak git reset --hardi Removeusuwają plik i przeprowadzają usuwanie.
The Red Pea

Odpowiedzi:


62

Lubię używać

git stash

To przechowuje wszystkie niezatwierdzone zmiany w skrytce . Jeśli chcesz odrzucić te zmiany później git stash drop(lub git stash popje przywrócić).

Chociaż z technicznego punktu widzenia nie jest to „właściwy” sposób odrzucania zmian (jak wskazywały inne odpowiedzi i komentarze).

SourceTree : Na górnym pasku kliknij ikonę „Stash”, wpisz jego nazwę i utwórz. Następnie w lewym menu pionowym możesz „pokazać” całą skrytkę i usunąć w menu prawym przyciskiem myszy. Prawdopodobnie w ST nie ma innego sposobu na odrzucenie wszystkich plików naraz.


7
cóż, jeśli chcesz po prostu odrzucić wszystko, co jest jeszcze łatwiejsze, po prostu to zrobićgit reset --hard HEAD
Mohammad AbuShady

4
@cocoanut Myślę, że moja odpowiedź jest „zła”, ponieważ jest to nadużycie stashfunkcji. Odpowiedź Mohammada to właściwy sposób na odrzucenie wszystkich zmian.
Max

Tak, a także dlatego, że nie widziałem, gdzie jest skrót.
Roberto,

3
Podoba mi się ta metoda, ponieważ daje ci ostatnią szansę na przywrócenie zmian, jeśli zmienisz zdanie. Rzadko reset --hard, ale często przechowuję zmiany, aby zacząć od nowa, a później upuszczam skrytkę, jeśli zdecyduję, że jej nie potrzebuję.
Max

Ta metoda nie usunęła nowych niewersjonowanych plików. Metoda Roberto używania resetowania i czyszczenia działała lepiej w tym przypadku.
Gabriel Jensen

143

W SourceTree for Mac kliknij prawym przyciskiem myszy pliki, które chcesz odrzucić (na liście Pliki w drzewie roboczym ) i wybierz Resetuj .

W SourceTree dla Windows kliknij prawym przyciskiem myszy pliki, które chcesz odrzucić (na liście zmian kopii roboczej ) i wybierz Odrzuć .

Na git po prostu zrobiłbyś:

git reset --hard aby odrzucić zmiany wprowadzone w wersjonowanych plikach;

git clean -xdfdo usuwania nowych ( nieśledzonych ) plików, w tym ignorowanych ( xopcja). djest również usunięcie niezatwierdzonych katalogów i fwymuszenie.


9
Możesz także kliknąć prawym przyciskiem myszy całą "Kopię roboczą" w lewym panelu (lub nacisnąć Cmd + Shift + R) ;-)
Geo

14
Niesamowite, że to samo polecenie ma inną nazwę dla komputerów Mac i Windows. Jakby Git GUI (w porównaniu do wiersza poleceń) nie był już wystarczająco zagmatwany.
NSTJ

Dzięki! Myślę, że to powinno zostać uznane za właściwą odpowiedź ;-)
Hernan Arber

@NSTJ: Zgoda ... całkiem nieźle budzi zaufanie do możliwości przypisania spójnej definicji terminom takim jak „reset” i „discard” w odniesieniu do narzędzi git. To znaczy definicja, od której można się spodziewać szerokiego porozumienia.
LarsH

7

W pliku niestabilizowanym kliknij trzy kropki po prawej stronie. Po kliknięciu pojawi się menu podręczne, w którym możesz Discard file.


2
Jest to w porządku, gdy jest tylko kilka plików, ale co się dzieje, gdy jest ich dużo?
Itai Spector

4

Ok, właśnie zauważyłem, że odpowiedź na moje pytanie znajduje się już w tytule pytania.

Aby usunąć pliki ze sceny użyj

git reset HEAD /file/name

I cofnąć zmiany w pliku

git checkout -- /file/name

Jeśli masz partię plików w folderze, możesz cofnąć cały folder

git checkout -- /folder/name

Zauważ, że wszystkie te polecenia są już wyświetlane, gdy Ty git status

Tutaj utworzyłem atrapy repozytorium i wymieniłem wszystkie 3 możliwości

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   test
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   test2
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       test3

3

W interfejsie użytkownika drzewa źródłowego kliknij działający katalog, kliknij prawym przyciskiem myszy plik (i), które chcesz odrzucić, a następnie kliknij Odrzuć


2

Wykonaj następujące czynności,

  • Kliknij commit
  • Wybierz wszystko, naciskając CMD+Ato, co chceszdelete or discard
  • Right click na wybranych niezatwierdzonych plikach, które chcesz usunąć
  • Wybierz Removez listy rozwijanej

1

Ok, więc w systemie Windows sourcetree, które jest proste, na macOS przez jakiś czas też wyglądałem.

Kliknij Command + Shift + R, gdy w drzewie źródłowym zostanie wyświetlone ukryte okienko, które pozwoli Ci odrzucić pojedyncze pliki LUB WSZYSTKIE! Dlaczego to jest ukryte? Nigdy się nie dowiemy… ale to działa!

wprowadź opis obrazu tutaj


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.