2012-08-16 18 views
17

Chciałbym zobaczyć plik z konkretnego zatwierdzenia w przeszłości, myślę o git reset --hard, ale nie będę w stanie zobaczyć commitów poza tym popełnić. Jak wrócić do zatwierdzenia (wraz ze stanem plików), przejrzeć pliki, przejść do teraźniejszości?wróć do konkretnego zatwierdzenia, a następnie wróć do teraźniejszości

+1

Zawsze możesz po prostu zrobić 'git show commit: path/file', aby obejrzeć plik. – fork0

+0

Spojrzałem na wiele plików, hehe. i lubię to lepiej za pomocą edytora tekstu. Dzięki, to przyda się następnym razem! – Michelle

Odpowiedz

31

Załóżmy, że Twój obecny oddział jest master a stary popełnić jest a1b2c3, wówczas można zmienić wszystkie pliki w drzewie roboczego z powrotem do starego popełnić z:

git checkout a1b2c3 

... i wrócić do master z :

git checkout master 

ten sposób o przeskoku w historii git (czyli sprawdzanie commit z nazwy obiektu, znany również jako hash lub sha1) jest bardzo przydatny dla znalezienia poprzedniej dobry zobowiązać do git bisect, na przykład, ponieważ nie będzie przenosić oddziałów.

Należy pamiętać o tym, że otrzymasz potencjalnie mylące ostrzeżenie: jeśli wypiszesz zatwierdzenie z jego nazwy obiektu (a1b2c3), które wprowadzi Cię w stan znany jako "odłączony HEAD" , gdzie HEAD, który zwykle reprezentuje bieżącą gałąź, zamiast tego wskazuje bezpośrednio na konkretne zatwierdzenie. Nie ma się czym martwić - jest to bardzo przydatne w poruszaniu się w historii - ale oznacza to, że jeśli zostanie utworzone nowe zatwierdzenie, gdy zostanie odłączone od HEAD, nie będą one przesuwać gałęzi do przodu.


fork0 zauważa w komentarzu poniżej potencjalnie użyteczny skrót git checkout -, który będzie KASY poprzedni oddział lub popełnienia że HEAD wskazał.

+0

człowiek, co myślałem? Dzięki. – Michelle

+0

Bez problemu - mam nadzieję, że dodatkowe komentarze, które dodałem, są przydatne. –

+4

Istnieje bezpieczniejszy sposób powrotu do poprzedniego zatwierdzenia: 'git checkout -'. Ta metoda wykorzystuje rejestrację kasowania (.git/logs/HEAD) i może bezpiecznie określić, co było poprzednim zatwierdzeniem. – fork0

Powiązane problemy