Czy można zobaczyć, kto edytował określoną linię przed zgłoszonym zatwierdzeniem git blame
, jak historia zatwierdzeń dla danej linii?
Na przykład uruchamiam następujące (w znakomitym uncrustify
projekcie):
$ git blame -L10,+1 src/options.cpp
^fe25b6d (Ben Gardner 2009-10-17 13:13:55 -0500 10) #include "prototypes.h"
Jak mogę dowiedzieć się, kto edytował ten wiersz przed zatwierdzeniem fe25b6d
? A kto go edytował przed tym zatwierdzeniem?
-w
opcji. Istnieje również-M
przeniesiony / skopiowany kodOdpowiedzi:
Możesz określić wersję dla git blame, która będzie wyglądać wstecz (zamiast domyślnej
HEAD
);fe25b6d^
jest rodzicemfe25b6d
.źródło
--
jest powszechnie używany jako separator w argumentach wiersza poleceń - w przypadku Git zwykle służy do oddzielania rzeczy takich jak skróty zatwierdzania od listy nazw plików.Możesz użyć git log -L, aby zobaczyć ewolucję zakresu linii.
Na przykład :
oznacza „śledź ewolucję linii od 15 do 23 w pliku o nazwie nazwa_pliku.txt”.
źródło
Odpowiedź Ambera jest prawidłowa, ale ja niejasne; Składnia jest następująca:
Uwaga:
--
służy do oddzielenia drzewa sha1 od względnych ścieżek plików. 1Na przykład:
Pełne uznanie dla Amber za znajomość wszystkich rzeczy! :)
źródło
Może chcesz sprawdzić:
Daje ładny graficzny obraz zmian, takich jak „git blame”, ale z klikalnymi linkami w wierszu, aby przejść do wcześniejszych zatwierdzeń. Najedź kursorem na linki, aby wyświetlić wyskakujące okienko ze szczegółami zatwierdzenia. Nie moje kredyty ... znalazłem to tutaj:
http://zsoltfabok.com/blog/2012/02/git-blame-line-history/
git gui
to graficzny interfejs Tcl / Tc do git. Bez żadnych innych parametrów uruchamia dość prostą, ale przydatną aplikację graficzną do zatwierdzania plików, kawałków, a nawet pojedynczych linii i innych podobnych poleceń, takich jak poprawianie, przywracanie, wypychanie ... To część pakietu git stock. W systemie Windows jest on zawarty w instalatorze. W systemie Debian - nie wiem o innych systemach * nix - musi być zainstalowany osobno:Z dokumentów:
https://git-scm.com/docs/git-gui
źródło
this
: ale jak widzę poprzednią wersję linii i kiedy została dodana?Opierając się na poprzedniej odpowiedzi, ten bash jednoliniowy powinien dać ci to, czego szukasz. Wyświetla historię obwiniania git dla konkretnego wiersza określonego pliku, z ostatnich 5 wersji:
W wyniku działania tego polecenia możesz zobaczyć treść zmiany linii, lub wyświetlony numer linii może nawet ulec zmianie, dla konkretnego zatwierdzenia.
Często oznacza to, że wiersz został dodany po raz pierwszy, po tym konkretnym zatwierdzeniu. Może to również oznaczać, że linia została przeniesiona z innej części pliku.
źródło
Jest też
recursive-blame
. Można go zainstalować za pomocąźródło
Bardzo unikalnym rozwiązaniem tego problemu jest użycie git log:
Jak wyjaśnił Andre tutaj
źródło
git config --global alias.changes 'log -p -M --follow --stat --'
a potem mogę po prostu wpisaćgit changes path/to/your/file
Jeśli używasz JetBrains Idea IDE (i pochodnych), możesz wybrać kilka linii, kliknij prawym przyciskiem myszy menu kontekstowe, a następnie Git -> Pokaż historię do wyboru. Zobaczysz listę zatwierdzeń, które miały wpływ na wybrane linie:
źródło
Opierając się na odpowiedzi Willa Sheparda, jego wyniki będą zawierać duplikaty wierszy dla zatwierdzeń, w których nie było zmian, więc możesz je filtrować w następujący sposób (używając tej odpowiedzi )
Zauważ, że usunąłem argument REVS i to wraca do głównego zatwierdzenia. Wynika to z powyższej obserwacji Maxa Nanasy'ego.
źródło
Opierając się na odpowiedzi Davida, chcę śledzić plik o zmienionej nazwie:
ref: ładnie wyświetla historię zmian nazw plików w git log
źródło
Od wersji Git 2.23 możesz korzystać git blame --ignore-rev
Dla przykładu podanego w pytaniu byłoby to:
(jest to jednak podchwytliwe pytanie, ponieważ fe25b6d to pierwsza wersja pliku!)
źródło
Używam tego małego skryptu bash, aby zobaczyć historię winy.
Pierwszy parametr: plik do obejrzenia
Późniejsze parametry: Przekazano na winę git
Możesz podać parametry winy, takie jak -L 70, + 10, ale lepiej jest użyć wyszukiwania wyrażenia regularnego git winy, ponieważ numery linii zwykle „zmieniają się” w czasie.
źródło
Budowa na stangls „s odpowiedź , mogę umieścić ten skrypt na mojej drodze (nawet w systemie Windows), jak git-BH:
To pozwala mi szukać wszystkich zatwierdzeń, w których było zaangażowane słowo:
Scenariusz:
źródło