Wcześniej dzisiaj odkryłem, że brakuje jakiegoś kodu w moim repozytorium git. Znałem część brakującego tekstu i plik, w którym on był, więc użyłem git log -S'missingtext' /path/to/file
. Jednak jedyną rzeczą, która powróciła, było zatwierdzenie, w którym dodałem wiersz zawierający brakujący tekst. Tekst nie był obecny w HEAD, a zatwierdzenie, które go dodało, było obecne w moim oddziale, więc wiedziałem, że jedno z zobowiązań w historii mojej oddziału musiało go usunąć, ale się nie pojawił.Znajdź, kiedy linia została usunięta
Po kilku ręcznych poszukiwaniach okazało się, że linia została przypadkowo usunięta podczas rozwiązywania konfliktu dla scalenia. Więc zastanawiam się:
- Czy to jest powodem, dlaczego kilof nie mógł znaleźć commit, który usunął linię?
- Jak mogę znaleźć miejsce, w którym "brakujący tekst" został usunięty bez ręcznego sprawdzania historii?
Każdy wgląd na # 1 byłoby świetnie (Sądziłem, że git log -S
da mi odpowiedź), ale moje pytanie brzmi nr 2, ponieważ chciałbym, aby móc uniknąć tego w przyszłości.
'git log -p' i'/missingtext' natomiast w 'less' to szybkie 'n' brudny sposób to zrobić. – nneonneo
Możliwy duplikat [Jak "winić" usuniętą linię] (http://stackoverflow.com/questions/4404444/how-do-i-blame-a-deleted-line) – hypehuman