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.

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

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

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.


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

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.


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.).


@ 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 .


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ć


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"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.