Kiedy uruchamiam git blame na pliku (używając msysgit), zawsze otrzymuję następujący rodzaj wydruku:
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 1) package co
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 2) {
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 3) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 4) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 5) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 6) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 7) impor
tj. pokazuje wszystkie wiersze jako jeszcze niezatwierdzone.
Wypróbowałem to na wielu plikach, które mają wiele zatwierdzeń - zawsze te same wyniki. Próbowałem też użyć ścieżki względnej / pełnej, ale wydaje się, że nie robi to różnicy.
Kiedy próbuję wykorzystać winę TortoiseGit, zawsze pokazuje każdą linię jako ostatnią zatwierdzoną przy pierwszym zatwierdzeniu:
nawet pomyślałem, jak już powiedziałem, w historii tych plików są dziesiątki zatwierdzeń.
Pomysły?
Edycja - więcej informacji
- Git blame działa dobrze na GitHub, gdzie jest hostowane to repozytorium.
- Działa również dobrze, jeśli sklonuję go na komputer z systemem Linux i obarczam winą tam
- Wygląda na to, że tylko na msysgit to nie działa
git
windows-subsystem-for-linux
msysgit
blame
Assaf Lavie
źródło
źródło
Odpowiedzi:
git blame file.txt
obwinia wersję file.txt w kopii roboczej. Jeśli plik.txt ma w repozytorium znaki nowej linii Windows (CRLF), a ty je maszcore.autocrlf = true
, to każda linia pliku.txt zostanie uznana za inną i zostanie zgłoszonagit blame
jako jeszcze niezatwierdzona.Powodem, dla którego
git blame <my_branch>
(lub nawet lepiejgit blame HEAD
, który działa bez względu na gałąź, w której się znajdujesz) jest to, że nie obwinia wersji roboczej kopii, więc nie ma możliwości, aby wiersze jeszcze nie zostały zatwierdzone.źródło
git blame -w
ignoruje białe znaki, więc nadal możesz winić kopię roboczą, jeśli chceszZnalazłem rozwiązanie - bardzo dziwne.
Jeśli uruchomię to:
Historia jest zepsuta, jak napisano powyżej.
Jeśli zamiast tego zrobię to:
To działa!
To bardzo dziwne, ponieważ AFAICS użycie nie wymaga nazwy gałęzi:
źródło
git blame mybranch cmakelists.txt
i to się nie powiedzie; ale jeśli napiszę,git blame mybranch CMakeLists.txt
to zadziała.Począwszy od git 2.0.1 (25 czerwca 2014 r.), Git winny powinien przestać zgłaszać wszystkie te wiersze „Jeszcze niezatwierdzone”.
Zobacz popełnić 4d4813a (26 kwietnia 2014) przez brian m. carlson (
bk2204
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu e934c67 , 06 czerwca 2014)źródło
git config -l
wynikami (i linkiem do tej odpowiedzi): to pozwoli mi i innym spróbować sprawdzić, czy problem nadal występuje.Inna możliwość: literówka w nazwie pliku uwzględniająca wielkość liter
Miałem ten sam problem z git blame file.txt, a potem zdałem sobie sprawę, że wprowadziłem literówkę w nazwie pliku z rozróżnianiem wielkości liter w pliku file.txt
Zmieniłem go na File.txt (na przykład) i otrzymałem oczekiwane wyniki bez konieczności określenia my_branch: git blame File.txt
źródło