Czy szukasz zmian w pliku w jednym oddziale; we wszystkich lokalnych oddziałach; we wszystkich oddziałach na jednym pilocie; czy to wszystko? Myślę, że to wszystko będzie wymagało skryptu.
benhorgen
Odpowiedzi:
1081
Te --followprace dla danego pliku
git log --follow -- filename
Różnica w stosunku do innych podanych rozwiązań
Należy pamiętać, że inne rozwiązania obejmują git log path(bez --follow). Takie podejście jest przydatne, jeśli chcesz śledzić np. Zmiany w katalogu , ale potknie się przy zmianie nazwy plików (więc użyj --follow filename).
+1 --followodpowiada za zmianę nazwy, więc jest to bardziej niezawodne niżgit log -- path
Gabe Moothart,
42
Zauważ, że --followakceptuje ścieżkę , która może być plikiem, ale także katalogiem. W przypadku tego ostatniego będzie on działał rekurencyjnie i raportował zmiany we wszystkich plikach poniżej tego punktu. (To zachowanie nie jest udokumentowane na stronie podręcznika i może nie być trwałe.)
StvnW
5
Jaka jest różnica między tym a sprawiedliwymgit log filename?
VaTo
8
@ SaulOrtega, git log filenamenie śledzi zmiany nazwy pliku, tzn. Pokaże wszystkie zatwierdzenia dotyczące tej nazwy pliku (nie rzeczywisty plik). Jeśli utworzysz pliki, Xa Yzmienisz oba, a następnie usuniesz Yi zmienisz nazwę Xna, Ya następnie zmienisz je i uruchomisz git log Y, otrzymasz wiadomości zarówno dla starej, jak Yi nowej . I odwrotnie, --followotrzymasz zatwierdzenia dotyczące tego pliku, gdy zostanie on nazwany Xi kiedy zostanie nazwany Y.
MarSoft,
7
użyj „git log - all filename”, aby wyświetlić wszystkie zatwierdzenia we wszystkich oddziałach
[--] <path>…
Show only commits that affect any of the specified paths. To prevent confusion with
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
Nie działa, jeśli ścieżka pliku uległa zmianie. Odpowiedź jackrabbit działa w tym przypadku.
kwahn
1
Działa to, jeśli musisz ograniczyć dziennik do określonej gałęzi
am
63
Patrzyłem na to uważnie i wydaje się, że wszystkie te odpowiedzi nie pokazują mi naprawdę wszystkich zobowiązań we wszystkich oddziałach.
Oto, co wymyśliłem, bawiąc się opcjami widoku edycji gitk. To pokazuje mi wszystkie zatwierdzenia dla pliku, niezależnie od oddziału, lokalnego, ponownego logowania i zdalnego.
Jest to idealne rozwiązanie, gdy ktoś wprowadza zmiany, ale zapomina, gdzie je zatwierdził.
earthmeLon
2
Bardzo przydatne. Obejmuje również zobowiązania do
przechowywania
To powinna być preferowana odpowiedź. Pytanie polegało na znalezieniu wszystkich zatwierdzeń, tak właśnie jest.
carl verbiest
Uwaga, która --reflogobejmuje zobowiązania, które zostały ponownie wprowadzone / zmienione lub w inny sposób odrzucone. Może to powinno być oczywiste, ale próbowałem to wykorzystać git logi starałem się zrozumieć, dlaczego widzę pozornie zduplikowane zatwierdzenia!
Soren Bjornstad,
43
Użyj poniższego polecenia, aby uzyskać zatwierdzenia dla określonego pliku:
Rozumiem, że to nie do końca odpowiada na pytanie, ponieważ chciał listy zatwierdzeń, ale to jest złoto i będzie w moim pliku.
zkent
3
To nie zadziała, jeśli plik nie istnieje w aktualnie wyewidencjonowanym oddziale. Możesz dodać gałąź jak git log -p mybranch -- filenamelub po prostu użyć, git log --all -- filenameaby przeglądać wszystkie gałęzie.
Soren Bjornstad,
37
Powinno być tak proste, jak git log <somepath>; sprawdź stronę (git-log(1) ).
Osobiście lubię używać, git log --stat <path>aby zobaczyć wpływ każdego zatwierdzenia na plik.
Lub nawet -pjeśli chcesz zobaczyć pełną różnicę, nie tylko to, że zmodyfikowano pewną liczbę linii.
Cascabel,
To prawda, ale to dość głośne, biorąc pod uwagę, że większość plików była zmieniana wiele razy w ciągu ich życia. Nie chcę widzieć pełnych różnic dla każdego zatwierdzenia, które kiedykolwiek dotknęło pliku. Zwykle szukam konkretnej rzeczy, więc mogę uzyskać dziennik zawierający tylko wpływy, a następnie git showkonkretne zatwierdzenia, które wyglądają, jakby miały znaczenie.
rfunduk
git log --stat --follow - * .html => wyjściowa lista zatwierdzeń z dokładnie jednym plikiem w każdym zatwierdzeniu. Bardzo dobrze!
Sergio Belevskij
18
Alternatywnie (od Gita 1.8.4) możliwe jest również pobranie wszystkich zatwierdzeń, które zmieniły określoną część pliku. Możesz to zrobić, przechodząc przez linię początkową i numer linii końcowej.
Zwrócony wynik to lista zatwierdzeń, które zmodyfikowały tę konkretną część. Polecenie wygląda następująco:
Jak zauważył jackrabb1t, --followjest bardziej niezawodny, ponieważ nadal wymienia historię poza nazwami / ruchami. Tak więc, jeśli szukasz pliku, który nie znajduje się obecnie w tej samej ścieżce lub pliku, którego nazwa została zmieniona w różnych zatwierdzeniach, - śledzi go.
Może to być lepsza opcja, jeśli chcesz wizualizować zmiany nazwy / ścieżki:
git log --follow --name-status -- <path>
Ale jeśli chcesz mieć bardziej kompaktową listę zawierającą tylko to, co ważne:
--followdziała dla pojedynczej ścieżki , która może być katalogiem. Jeśli przejdzie katalog, uruchomi się rekurencyjnie i zgłosi zmiany we wszystkich plikach poniżej tego punktu.
StvnW
10
Jeśli próbujesz obserwować plik usunięty w poprzednim zatwierdzeniu, użyj
Dla gitpoczątkujących: Służy również git log -p --follow -- filenamedo wyświetlania zmian. Uwaga: „nazwa pliku” może być plikiem, katalogiem lub submodułem.
Tino
8
Jeśli chcesz wyświetlić wszystkie zatwierdzenia, które zmieniły plik, we wszystkich gałęziach użyj tego:
Jeśli chcesz zobaczyć wszystkie zmiany wprowadzone w zatwierdzeniach, które zmieniły konkretny plik (a nie tylko zmiany w samym pliku), możesz przekazać --full-diff:
co oznacza, że 5 zatwierdzeń dotknęło tego pliku. Ma odwrotną kolejność chronologiczną, więc pierwsze zatwierdzenie na liście b7c4f0d7jest najnowsze.
Można go zainstalować przy użyciu „sudo apt-get install git-gui gitk”. Może być używany do wyświetlania zatwierdzeń określonego pliku przez „gitk <nazwa_pliku>”.
Odpowiedzi:
Te
--follow
prace dla danego plikuRóżnica w stosunku do innych podanych rozwiązań
Należy pamiętać, że inne rozwiązania obejmują
git log path
(bez--follow
). Takie podejście jest przydatne, jeśli chcesz śledzić np. Zmiany w katalogu , ale potknie się przy zmianie nazwy plików (więc użyj--follow filename
).źródło
--follow
odpowiada za zmianę nazwy, więc jest to bardziej niezawodne niżgit log -- path
--follow
akceptuje ścieżkę , która może być plikiem, ale także katalogiem. W przypadku tego ostatniego będzie on działał rekurencyjnie i raportował zmiany we wszystkich plikach poniżej tego punktu. (To zachowanie nie jest udokumentowane na stronie podręcznika i może nie być trwałe.)git log filename?
git log filename
nie śledzi zmiany nazwy pliku, tzn. Pokaże wszystkie zatwierdzenia dotyczące tej nazwy pliku (nie rzeczywisty plik). Jeśli utworzysz pliki,X
aY
zmienisz oba, a następnie usunieszY
i zmienisz nazwęX
na,Y
a następnie zmienisz je i uruchomiszgit log Y
, otrzymasz wiadomości zarówno dla starej, jakY
i nowej . I odwrotnie,--follow
otrzymasz zatwierdzenia dotyczące tego pliku, gdy zostanie on nazwanyX
i kiedy zostanie nazwanyY
.git log path
powinien robić co chcesz. Odgit log
mężczyzny :źródło
Patrzyłem na to uważnie i wydaje się, że wszystkie te odpowiedzi nie pokazują mi naprawdę wszystkich zobowiązań we wszystkich oddziałach.
Oto, co wymyśliłem, bawiąc się opcjami widoku edycji gitk. To pokazuje mi wszystkie zatwierdzenia dla pliku, niezależnie od oddziału, lokalnego, ponownego logowania i zdalnego.
Działa również z
git log
:źródło
--reflog
obejmuje zobowiązania, które zostały ponownie wprowadzone / zmienione lub w inny sposób odrzucone. Może to powinno być oczywiste, ale próbowałem to wykorzystaćgit log
i starałem się zrozumieć, dlaczego widzę pozornie zduplikowane zatwierdzenia!Użyj poniższego polecenia, aby uzyskać zatwierdzenia dla określonego pliku:
źródło
git log -p mybranch -- filename
lub po prostu użyć,git log --all -- filename
aby przeglądać wszystkie gałęzie.Powinno być tak proste, jak
git log <somepath>
; sprawdź stronę (git-log(1)
).Osobiście lubię używać,
git log --stat <path>
aby zobaczyć wpływ każdego zatwierdzenia na plik.źródło
-p
jeśli chcesz zobaczyć pełną różnicę, nie tylko to, że zmodyfikowano pewną liczbę linii.git show
konkretne zatwierdzenia, które wyglądają, jakby miały znaczenie.Alternatywnie (od Gita 1.8.4) możliwe jest również pobranie wszystkich zatwierdzeń, które zmieniły określoną część pliku. Możesz to zrobić, przechodząc przez linię początkową i numer linii końcowej.
Zwrócony wynik to lista zatwierdzeń, które zmodyfikowały tę konkretną część. Polecenie wygląda następująco:
gdzie
upperLimit
jeststart_line_number
ilowerLimit
jestending_line_number
Więcej informacji - https://www.techpurohit.com/list-some-useful-git-commands
źródło
Jak zauważył jackrabb1t,
--follow
jest bardziej niezawodny, ponieważ nadal wymienia historię poza nazwami / ruchami. Tak więc, jeśli szukasz pliku, który nie znajduje się obecnie w tej samej ścieżce lub pliku, którego nazwa została zmieniona w różnych zatwierdzeniach, - śledzi go.Może to być lepsza opcja, jeśli chcesz wizualizować zmiany nazwy / ścieżki:
Ale jeśli chcesz mieć bardziej kompaktową listę zawierającą tylko to, co ważne:
lub nawet
Minusem jest to, że
--follow
działa tylko dla jednego pliku.źródło
--follow
działa dla pojedynczej ścieżki , która może być katalogiem. Jeśli przejdzie katalog, uruchomi się rekurencyjnie i zgłosi zmiany we wszystkich plikach poniżej tego punktu.Jeśli próbujesz obserwować plik usunięty w poprzednim zatwierdzeniu, użyj
źródło
git
początkujących: Służy równieżgit log -p --follow -- filename
do wyświetlania zmian. Uwaga: „nazwa pliku” może być plikiem, katalogiem lub submodułem.Jeśli chcesz wyświetlić wszystkie zatwierdzenia, które zmieniły plik, we wszystkich gałęziach użyj tego:
źródło
Jeśli chcesz szukać wszystkich zatwierdzeń według,
filename
a nie wedługfilepath
, użyj:źródło
Jeśli chcesz zobaczyć wszystkie zmiany wprowadzone w zatwierdzeniach, które zmieniły konkretny plik (a nie tylko zmiany w samym pliku), możesz przekazać
--full-diff
:źródło
[branch]
Służy
git log --all <filename>
do wyświetlania zatwierdzeń wpływających<filename>
na wszystkie gałęzie.źródło
Zakładając, że pakiet „gitk” jest już zainstalowany.
Jeśli nie jest zainstalowany, wykonaj następujące czynności:
A następnie wypróbuj powyższe polecenie. To jest dla Linuksa ... Może pomóc użytkownikom Linuksa, jeśli chcą GUI.
źródło
gitk
jest on dołączony do Git dla Windows.Aby uzyskać listę skrótów zatwierdzeń, użyj
git rev-list
Wynik:
co oznacza, że 5 zatwierdzeń dotknęło tego pliku. Ma odwrotną kolejność chronologiczną, więc pierwsze zatwierdzenie na liście
b7c4f0d7
jest najnowsze.źródło
W systemie Linux możesz do tego użyć gitk.
Można go zainstalować przy użyciu „sudo apt-get install git-gui gitk”. Może być używany do wyświetlania zatwierdzeń określonego pliku przez „gitk <nazwa_pliku>”.
źródło
Odniesienie
źródło