Usunąłem plik za pomocą Git, a następnie zatwierdziłem, więc plik nie jest już w mojej kopii roboczej. Chcę przejrzeć zawartość tego pliku, ale nie chcę go przywrócić. W jaki sposób mogę to zrobić?
105
git show HEAD^:path/to/file
Możesz użyć jawnego identyfikatora zatwierdzenia lub HEAD~n
zobaczyć starsze wersje lub jeśli było więcej niż jedno zatwierdzenie od czasu jego usunięcia.
path/to/file
jest to pełna ścieżka od góry projektu (górny katalog repozytorium).fatal: Invalid object name 'HEAD^'.
(muszę wspomnieć, że mam tylko "wstępne zatwierdzenie")Jeśli jest to plik, który usunąłeś jakiś czas temu i nie chcesz szukać wersji , możesz użyć (nazwa pliku
foo
w tym przykładzie; możesz użyć pełnej ścieżki):Te
rev-list
spojrzenia inwokacji dla wszystkich korektfoo
ale tylko jeden list. Ponieważrev-list
listy są w odwrotnym porządku chronologicznym, to jest to ostatnia zmiana, która uległa zmianiefoo
, czyli zatwierdzenie, które zostało usuniętefoo
. (Opiera się to na założeniu, że git nie pozwala na zmianę usuniętego pliku, a mimo to pozostaje usunięty.) Nie możesz po prostu użyć wersji, którarev-list
zwraca taką, jaka jest, ponieważfoo
już tam nie istnieje. Trzeba poprosić o jeden tuż przed nią, która zawiera ostatnią wersję pliku, stąd^
ingit show
.źródło
**/foo
jeśli nie znasz ścieżki (zadziała to dla polecenia rev-list, ale nie dla polecenia show. Jednak za pomocą zatwierdzenia z polecenia rev-list możesz znaleźć ścieżkę).Ponieważ możesz nie przypomnieć sobie dokładnej ścieżki, możesz zamiast tego pobrać sha1 z dziennika git, a następnie możesz po prostu wydać
źródło
git whatchanged --no-abbrev
daje wynik podobny do dziennika git (lub svn).