Odpowiedzi:
Uważam, że jeśli plik jest zmodyfikowany, ale jeszcze nie dodany (wystawiony), jest czysto „prywatny”.
Oznacza to, że nie może zostać przywrócone przez GIT, jeśli zostanie nadpisane indeksem lub wersją HEAD (chyba że masz gdzieś kopię swojej bieżącej pracy). "
Treść „prywatna” jest widoczna tylko w Twoim bieżącym katalogu, ale nie jest w żaden sposób zarejestrowana w Gicie.
git checkout --), spodziewałbym się, że będzie w stanie cofnąć tę operację, być może za pośrednictwem reflog. Czy to złe oczekiwanie?
git checkout folders/subfolders/fileale przez przypadek wcisnąłem Enter folderi straciłem całą swoją pracę. / znajduje się 1 cm od klawisza enter na mojej klawiaturze i często przełączam się między maszynami z różnymi układami klawiatury, więc często mam 10-15 minut, aby moje palce przyzwyczaiły się do nowych pozycji. Trudno uwierzyć w 2018 roku, że git trashuje pliki, chociaż w książce git jest napisane, że git robi wszystko, aby nie stracić pracy.
Jeśli używasz „profesjonalnego” środowiska IDE, są duże szanse, że możesz przywrócić pliki z lokalnej historii. Na przykład w Rubymine możesz kliknąć pliki prawym przyciskiem myszy i obejrzeć historię zmian niezależnych od zmian gita, zapisała mnie teraz kilka razy ^^
Jeśli pracujesz w edytorze takim jak Sublime Text i masz nadal otwarty plik, możesz nacisnąć ctrl + z, a powróci on do stanu, który miał przed git checkout.
Niestety zmiany zostały utracone. Twoje prywatne modyfikacje zostaną po prostu nadpisane. Chyba że zrobiłeś to git stashprzed dokonaniem płatności ...
Spójrz na to z jaśniejszej strony: możesz teraz wdrażać rzeczy jeszcze lepiej;)
Sprawdź lokalną historię w swoim IDE.
Tworzysz na OS X? Używasz Xcode? Prawdopodobnie będziesz mieć szczęście!
Jak opisano w komentarzu qungu , OS X utrzymuje automatycznie zapisaną historię wersji plików, nawet jeśli nie używasz wehikułu czasu .
Tak więc, jeśli nieostrożnie zdmuchnąłeś swoje niestacjonarne zmiany lokalne git checkout ., oto jak prawdopodobnie możesz odzyskać całą swoją pracę.
Jeśli ktoś stwierdzi, że ten wątek zniszczył jakąś pracę w XCode, istnieje sposób na uzyskanie historii AutoSave. Sam XCode nie ma pozycji menu umożliwiającej wyświetlenie historii automatycznego zapisywania, ale przechowuje ją. Jeśli otworzysz dane pliki w TextEdit, możesz cofnąć i przejrzeć historię automatycznego zapisywania w menu Plik> Przywróć.
Co jest niesamowite, wczoraj odzyskałem dla mnie około dnia pracy.
Możesz zapytać: „Dlaczego nie ma interfejsu wiersza poleceń git, głównego systemu VCS używanego do inżynierii oprogramowania w2016 2017 20182019, przynajmniej utworzyć kopię zapasową plików przed ich usunięciem? Jak, wiesz, dobrze napisane narzędzia programowe przez ostatnie trzy dekady ”.
A może zapytasz: „Dlaczego ta niesamowita funkcja historii plików jest dostępna w TextEdit, ale nie w Xcode, gdzie naprawdę jej potrzebuję?”
… I myślę, że obie te rzeczy wiele wam powiedzą o naszej branży. A może pójdziesz i naprawisz te narzędzia. Co byłoby super.
Modelniestety
W VSCODE ctrl + z (cofnij) działało dla mnie
Zrobiłem git checkout .zamiast git add .i wszystkie zmiany w plikach zostały utracone.
Ale teraz używając command + zna moim Macu, odzyskałem zmiany i zapisałem dla mnie ton pracy.
Jeśli kiedykolwiek wcześniej zapisałeś zmiany (na przykład przed zmianą bazy), to prawdopodobnie pomoże
Jak odzyskać upuszczoną skrytkę w Git?
nawet jeśli już „ukryłeś” zmiany.
Skutecznym ratownikiem w tego typu sytuacjach jest Time Machine (OS X) lub podobny system kopii zapasowych oparty na czasie. Uratowało mnie to kilka razy, ponieważ mogę wrócić i przywrócić tylko ten jeden plik.
Właśnie to mi się przydarzyło, sprawdziłem cały folder zawierający godziny pracy! Na szczęście odkryłem, że moje IDE Netbeans przechowuje historię każdego pliku, co pozwoliło mi odzyskać 99% rzeczy, mimo że musiałem naprawić kilka rzeczy ręcznie.
Zwykle całą swoją pracę mam w folderze skrzynki referencyjnej. Gwarantuje to, że bieżący folder będzie dostępny poza moim komputerem lokalnym i Githubem. Myślę, że to mój kolejny krok, aby zagwarantować „kontrolę wersji” inną niż git. Możesz to zrobić, aby przywrócić plik do poprzednich wersji plików skrzynki referencyjnej
Mam nadzieję że to pomoże.
Technicznie tak. Ale tylko w niektórych przypadkach. Jeśli na przykład masz stronę kodową w górę i trafisz na git checkout i zdajesz sobie sprawę, że przypadkowo sprawdziłeś niewłaściwą stronę lub coś w tym stylu. Przejdź do strony i kliknij cofnij. (dla mnie polecenie + z) i wróci dokładnie do miejsca, w którym byłeś, zanim trafisz na stary dobry, dobry checkout gita.
To nie zadziała, jeśli Twoja strona została zamknięta, a następnie trafisz do kasy git. Działa tylko wtedy, gdy aktualna strona kodowa jest otwarta
Jeśli pracujesz z terminala / cmd prompt otwarty i używany żadnych poleceń git że byłby pokazał Unstaged zmiany ( diff, add -p, checkout -p, etc.), a nie zamknięty terminal / cmd szybka, ponieważ Znajdziesz Unstaged zmian są nadal dostępne, jeśli przewiniesz w górę do miejsca, w którym uruchomiłeś te wyżej wymienione polecenia git.
Koleś,
powiedzmy, że jesteś bardzo szczęśliwym facetem, tak jak ja, wróć do edytora i zrób cofnij (polecenie + Z dla mac), powinieneś zobaczyć utraconą zawartość w pliku. Mam nadzieję, że ci to pomogło. Oczywiście zadziała to tylko w przypadku istniejących plików.
Może twoje zmiany nie zostały utracone. Zaznacz „git reflog”
Cytuję poniższy artykuł:
„Zasadniczo każdą czynność wykonywaną w Git, w którym przechowywane są dane, można znaleźć w reflogu. Git bardzo się stara, aby nie utracić danych, więc jeśli z jakiegoś powodu sądzisz, że tak jest, są szanse, że możesz je wykopać używając git reflog ”
Patrz szczegóły:
http://gitready.com/intermediate/2009/02/09/reflog-your-safety-net.html
git reflogtutaj, znalazłem tę odpowiedź, gdy szukałem cofnięcia git checkout HEAD .- miałem zamiar wpisać git reset HEAD .- właśnie wykonałem `` reset git - miękki HEAD ~ 1 '' i nie wiedziałem o git reflogtak mogłem odzyskać pracę, którą wykonałem :)