GitHub: пошук за старими версіями файлів


98

Я знаю, що за допомогою GitHub я можу шукати всі поточні версії моїх файлів у репо-репо. Однак я також хотів би переглянути старіші версії моїх репо-файлів. Наприклад, скажіть, у мене в коді була функція під назвою get_info (), але видалила її кілька версій тому, чи можна шукати get_info і знаходити код. Якщо використання GitHub неможливо, чи можливо це з командного рядка git?

EDIT

Дякуємо @Mark Longair за те, що він показав, як це можна зробити з командного рядка git. Якщо це неможливо в GitHub, було б чудовою функцією.

Відповіді:


121

На даний момент я не вірю, що можливо здійснити пошук у всій історії коду сховища на веб-сайті github - найближчим є лише пошук у поточному коді сховища з опцією "пошук коду" на цій сторінці .

Однак, з командного рядка, ви можете знайти будь-які коммітов , які введені або віддалені рядки згадуючи get_infoз -Sпараметром до git log. наприклад:

git log -Sget_info -p

(nb не повинно бути пробілу між -Sпошуковим терміном)

(також зауважте: для пошуку кількох слів, оточення '):

git log -S'get info' -p

Отже, як мінімум, слід знайти коміту, де функція була вперше введена та та, яка її видалила. Я додав -pтак, що ви також можете побачити виправлення - якщо багато комісій внесли зміни, які згадали про функцію, яка може бути корисною. Якщо функція була лише на іншій гілці, її також можна було б корисно використовувати --allдля пошуку всіх гілок.

Джефромі в коментарі нижче вказує, що git 1.7.4 введе -Gваріант як альтернативу - ця зміна узагальнена в недавньому дописі від блогу Хуніо Хамано (git support): http://gitster.livejournal.com/48191.html


2
Так, я знаю, що можу шукати коментарі, але що робити з пошуком коду?
normski

10
Опція -S робить вигляд в коді - він знаходить якісь - або фіксації, get_infoмістяться в диффе , що вчинення ПРЕДСТАВЛЯЄ. Можливо, ви плутаєтесь із --grepопцією, яка здійснює пошук повідомлень журналу.
Марк Лонгейр

2
@normski: І останні версії git додали аналогічну -Gопцію, яка приймає регулярний вимір замість фіксованого рядка.
Каскабель

@Jefromi: дякую, що згадуєте про це - я додав це у відповідь, сподіваюся, що це нормально.
Марк Лонгейр

2
@Anthony Damico: так, просто цитуйте рядок пошуку, наприкладgit log -S'get info' -p
Mark Longair
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.