To doprowadza mnie do szału.Git: Znajdź skasowany kod
Jak znaleźć kod, który został usunięty?
skończyło się znalezieniem gdzie został stworzony z tego:
$ git log --pretty=oneline -S'some code'
I to na tyle dobrze, ale byłem też ciekaw, gdzie został usunięty, a do tej pory, nie ma kości.
Najpierw wypróbowałem git diff HEAD..HEAD^|grep 'some code'
, rozszerzając zakres za każdym razem, aż znalazłem linie, w których zostały usunięte. Fajnie, więc przypuśćmy, że znalazłem go w zakresie HEAD^^..HEAD^^^
, potem robię git show HEAD^^^
i git show HEAD^^
z grep
, ale kodu nigdzie nie można znaleźć!
Potem przeczytałem się trochę na git bisect
, i na pewno wystarczy, że daje mi jedną wersję, gdzie winowajcą ma być ... Znowu git show rev|grep 'some code'
pojawia się pusty ...
Co się? Co ja robię źle?
Dzięki!
Mówisz, że kiedy robisz w zasadzie następujące masz żadnych trafień ?:
Jeśli tak, to wydaje zakaz sensical .... czy to w 'log', powinien być widoczny w' show' ... prawda? A może nie rozumiem tego pytania. – metasimMinęło trochę czasu odkąd byłem w tej sytuacji i nie pokazał się ponownie, więc nie mogę przetestować twojego polecenia. Dzięki temu może się przydać komuś. – Ivan
Stary post/komentarz tutaj, ale dokładnie to, czego potrzebowałem. @SimeonFitch Twoja składnia działa idealnie dla mnie, aby znaleźć i wyświetlić rzeczywistą linię kodu. Dodatkowym dodatkiem, który uznałem za przydatny, było użycie opcji "--context = n 'grep, aby wyświetlić wystarczającą liczbę wierszy przed/po, aby dowiedzieć się, jaka jest nazwa pliku (istnieją również inne opcje grep, które mogłyby w tym pomóc). Tak więc w moim przypadku drugim poleceniem było: git show $ SHAHIT | grep --context = 30 'some code' –