2011-12-20 12 views
5

Właśnie dowiedziałem się, że w jednym z moich plików testowych brakuje około 20 linii na górze.Jak mogę się dowiedzieć, kiedy jakaś część pliku została usunięta w git?

Ostatnio próbowałem opanować VIM, więc domyślam się, że udało mi się jakoś usunąć te linie, nawet nie zauważając, a następnie przekazując je do repozytorium.

Teraz pytanie brzmi, jaki jest najlepszy sposób, aby się dowiedzieć, kiedy to się stało? Jak mogę sprawdzić, kiedy coś zostało usunięte?

Odpowiedz

5

Znajdź wersji R gdzie istniała tych linii, a następnie użyć

git blame --reverse $R..HEAD <file> 

To pokaże ci, którzy je usunąć.

Jeśli nie można znaleźć takiej rewizji, ale pamiętać ciąg (powiedzmy „test_database”) zawarty w brakujących linii, można użyć funkcji kilof aby szukać zobowiązuje obejmujących ten ciąg:

git log -Stest_database <file> 
+0

W rzeczywistości "git win - reverse" nie powie Ci, kto usunął linie bezpośrednio. Informuje o ostatniej rewizji, w której istniały linie. Jak znaleźć winną wersję, która faktycznie usunęła linię? W ten sposób zorientowałem się, jak to zrobić: weź rewizję LR z danych wyjściowych 'git blame --reverse', a następnie wykonaj to:' git log --reverse --ancestry-path $ LR..HEAD ', i pierwszy wpis jest kandydatem, wywołaj go C. Następnie użyj 'git show $ C' aby sprawdzić, a jeśli nie jest to czego szukasz, zacznij od nowa z git winy, zastępując R przez C. – jbyler

Powiązane problemy