Git: найти удаленный код
Это меня раздражает.
Как найти удаленный код?
В итоге я нашел, где он был создан:
$ git log --pretty=oneline -S'some code'
И это достаточно хорошо, но мне также было любопытно найти, где он был удален, и до сих пор нет кубиков.
Во-первых, я пробовал git diff HEAD..HEAD^|grep 'some code'
, расширяя диапазон каждый раз, пока не нашел строки, в которых он был удален. Приятно, поэтому предположим, что я нашел его на диапазоне HEAD^^..HEAD^^^
, затем git show HEAD^^^
и git show HEAD^^
с grep
, но код нигде не найден!
Затем я немного прочитал git bisect
, и, конечно же, он дает мне одну ревизию, в которой виновник должен быть... Опять же, git show rev|grep 'some code'
появляется пустым...
Что? Что я делаю неправильно?
Спасибо!
Ответы
Ответ 1
Hmph, работает для меня:
$ git init
Initialized empty Git repository in /Users/pknotz/foo/.git/
$ echo "Hello" > a
$ git add a
$ git commit -am "initial commit"
[master (root-commit) 7e52a51] initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 a
$ echo " World" >> a
$ git commit -am "Be more specific"
[master 080e9fe] Be more specific
1 files changed, 1 insertions(+), 0 deletions(-)
$ echo "Hello" > a
$ git commit -am "Be less specific"
[master 00f3fd0] Be less specific
1 files changed, 0 insertions(+), 1 deletions(-)
$ cat a
Hello
$ git log -SWorld
commit 00f3fd0134d0d54aafbb9d959666efc5fd492b4f
Author: Pat Notz <[email protected]>
Date: Tue Oct 6 17:20:48 2009 -0600
Be less specific
commit 080e9fe84ff89aab9d9d51fb5d8d59e8f663ee7f
Author: Pat Notz <[email protected]>
Date: Tue Oct 6 17:20:33 2009 -0600
Be more specific
Или это не то, что вы имеете в виду?
Ответ 2
git log -S<string>
выполняет задание, но если вам нужно выполнить более сложные поиски, вы можете использовать git log -G<regex>
.
Из man
:
-G<regex>
Посмотрите на различия, текст патча содержит добавленные/удаленные строки которые соответствуют <regex>
.
Ответ 3
Если ваш репозиторий находится на github.com, он имеет встроенную функцию для поиска.
Он отвечает в мс и также выполняет поиск в удаленном коде.