Przeglądanie historii GIT przeniesionych plików

81

Pomimo przeczytania wielu innych postów dotyczących GIT i przeniesionych plików, wciąż mam problem ze zrozumieniem, jak prześledzić pełną historię. Postępowanie gitk myfilezgodnie z sugestią tutaj wydaje się pokazywać historię tylko do poprzedniego ruchu. Rozumiem, że GIT nie śledzi plików, tylko ich zawartość. Więc na pewno powinienem być w stanie zobaczyć pełną ewolucję pliku, nawet jeśli został przeniesiony?

Czy ktoś może skierować mnie do dobrego, ale prostego przykładu / samouczka?

Chciałbym zobaczyć przykład, w którym niektóre pliki są przenoszone, zmieniane i zatwierdzane, a następnie wyświetlana jest historia pojedynczego pliku, przenosi się i wszystko. Patrzyłem na „dziennik”, ale wydaje się, że dotyczy to zameldowań. Nadal doceniłbym jakąś radę, nawet jeśli mówi, że wciąż myślę za dużo SVN.

Pingwin
źródło

Odpowiedzi:

111

Spróbuj skorzystać z --followopcjigit log :

git log --follow file.txt
Greg Hewgill
źródło
7
Zauważ, że obecnie --followmechanizm jest przykręcony i nie działa w niektórych przypadkach narożnych.
Jakub Narębski
2
Jeśli dostaniesz fatal: ambiguous argument 'file.txt': unknown revision or path not in the working tree, spróbuj git log
follow
2
@nealmcb dodanie -- przed ścieżką / do / pliku było dokładnie tym, czego brakowało. Po dodaniu zadziałało świetnie. Dzięki!
bkidd
1

Użyj git logz oboma --followi, --patchktóry wyświetli dziennik ze zmianą nazwy z / rename na dane wyjściowe. I nie zapomnij o --ścieżce do pliku przed.

git log --follow --patch -- path/to/file.ext

Na przykład historia pliku testdir/more-testing.txtw moim systemie pokazuje:

Date:   Wed Mar 18 14:48:07 2020 -0700

   renamed file

diff --git a/testdir/testing.txt b/testdir/more-testing.txt
similarity index 100%
rename from testdir/testing.txt
rename to testdir/more-testing.txt

commit feb58d3ab8e8ce940f80499df0c46e8fc8caf679
Author: Igal <redacted>
Date:   Wed Mar 18 14:47:18 2020 -0700

   moved test.txt to subdirectory and renamed

diff --git a/test.txt b/testdir/testing.txt
similarity index 100%
rename from test.txt
rename to testdir/testing.txt

commit 34c4a7cebaeb0df5afb950972d69adea6b1a7560
Author: Igal <redacted>
Date:   Wed Mar 18 14:45:58 2020 -0700

   added test.txt

diff --git a/test.txt b/test.txt
new file mode 100644
index 000000000..0527e6bd2
--- /dev/null
+++ b/test.txt
@@ -0,0 +1 @@
+This is a test
(END)

isapir
źródło