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.

goldfrapp04
źródło
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.

Maks
źródło
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.

Roberto
źródło
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.

Inżynier NYC Tech
źródło
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
Mohammad AbuShady
źródło
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ć

giuse
źródło
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
Frostmourne
źródło
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

ItaiRoded
źródło
0

Jego Ctrl+ Shift+r

Dla mnie była tylko jedna opcja odrzucenia wszystkich.

wprowadź opis obrazu tutaj

Sharutkarsh
źródło