Jak wyświetlić historię plików w Git?

134

Z Subversion mogłem użyć TortoiseSVN do przeglądania historii / dziennika pliku.

Jak mogę to zrobić za pomocą Git?

Po prostu wyszukuję zapis historii dla konkretnego pliku, a następnie możliwość porównania różnych wersji.

mrblah
źródło

Odpowiedzi:

157

Służy git logdo przeglądania historii zmian. Z każdym zatwierdzeniem powiązany jest specyfikator zmiany, którym jest klucz mieszający (np. 14b8d0982044b0c49f7a855e396206ee65c0e787I b410ad4619d296f9d37f0db3d0ff5b9066838b39). Aby zobaczyć różnicę między dwoma różnymi zatwierdzeniami, użyj git diffz kilkoma pierwszymi znakami specyfikatorów wersji obu zatwierdzeń, na przykład:

# diff between commits 14b8... and b410...
git diff 14b8..b410
# only include diff of specified files
git diff 14b8..b410 path/to/file/a path/to/file/b

Jeśli chcesz uzyskać przegląd wszystkich różnic, które miały miejsce od zatwierdzenia do zatwierdzenia, użyj git loglub git whatchangedz opcją poprawki:

# include patch displays in the commit history
git log -p
git whatchanged -p
# only get history of those commits that touch specified paths
git log path/a path/b
git whatchanged path/c path/d
chrześcijanin
źródło
7
Dzięki za wskazówkę -p, która jest bardzo przydatna do znalezienia, które wersje wymagały trochę kodu.
Christopher Pickslay
102

Wygląda na to, że potrzebujesz git diff i / lub git log . Sprawdź także gitk

gitk path/to/file
git diff path/to/file
git log path/to/file
baudtack
źródło
3
Oto kolejny ukłon w stronę gitk, który zapewnia świetny sposób na przeglądanie wszystkich migawek pojedynczego pliku w repozytorium git.
Ray Brown,
1
Domyślnie gitk pokazuje różnicę plus 10 linii kontekstu, ale co jeśli chcesz zobaczyć migawkę całego pliku? Po prostu ustaw „Linie kontekstu” na dużą wartość (np. 100000). Następnie możesz przełączać się między zatwierdzeniami i oglądać cały plik w różnych momentach czasu. (Możesz również przeszukać plik.)
antinome
35

Lubię używać gitk name_of_file

To pokazuje ładną listę zmian, które zaszły w pliku przy każdym zatwierdzeniu, zamiast pokazywać zmiany we wszystkich plikach. Ułatwia wytropienie czegoś, co się wydarzyło.

Gustavo Litovsky
źródło
30

możesz także użyć tig do ładnej przeglądarki repozytorium git opartej na ncurses. Aby wyświetlić historię pliku:

tig path/to/file
user217433
źródło
29

Moim ulubionym jest to git log -p <filename>, które zawiera historię wszystkich zatwierdzeń danego pliku, a także różnice dla każdego zatwierdzenia.

siekacz
źródło
11

Wiele przeglądarek historii Git, w tym git log(i 'git log --graph'), gitk (w Tcl / Tk, część Git), QGit (w Qt), tig (interfejs trybu tekstowego do git, używając ncurses), Giggle (w GTK +), TortoiseGit i git-cheetah obsługują ograniczanie ścieżek (np gitk path/to/file.).

Jakub Narębski
źródło
@ RobertVuković Wiem, że to stare pytanie ... ale zobacz moją odpowiedź poniżej!
brianc
4

Oczywiście, jeśli chcesz czegoś tak bliskiego TortoiseSVN, jak to tylko możliwe, możesz po prostu użyć TortoiseGit .

Jörg W Mittag
źródło
Z wyjątkiem tego, że rozszerzenia powłoki TortoiseSvn zawierają polecenie do wyświetlania historii pojedynczego pliku, podczas gdy TortoiseGit nie.
Neutrino
3

git log --all -- path/to/file powinno działać

Edson Medina
źródło
Nie ma linku w mojej odpowiedzi @ineersa
Edson Medina
1
To powinna być najlepsza odpowiedź. Nie lubię używać kiepskich narzędzi GUI
Grobi
2

TortoiseGit zapewnia również narzędzie wiersza poleceń, aby zobaczyć historię pliku. Korzystanie z programu PowerShell:

C:\Program` Files\TortoiseGit\bin\TortoiseGitProc.exe /command:log /path:"c:\path\to\your\file.txt"
brianc
źródło