Git: Найти удаленный код - PullRequest
       1

Git: Найти удаленный код

56 голосов
/ 07 октября 2009

Это сводит меня с ума.

Как найти код, который был удален?

В итоге я нашел, где он был создан с этим:

$ 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' выходит пустым ...

Что за? Что я делаю не так?

Спасибо!

Ответы [ 2 ]

48 голосов
/ 07 октября 2009

Хм, у меня работает:

$ 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 <patnotz@gmail.com>
Date:   Tue Oct 6 17:20:48 2009 -0600

    Be less specific

commit 080e9fe84ff89aab9d9d51fb5d8d59e8f663ee7f
Author: Pat Notz <patnotz@gmail.com>
Date:   Tue Oct 6 17:20:33 2009 -0600

    Be more specific

Или это не то, что вы имеете в виду?

27 голосов
/ 03 июня 2014

git log -S<string> выполняет работу, но если вам нужно выполнить более сложные поиски, вы можете использовать git log -G<regex>.

Из man:

-G<regex>

Ищите различия, чей текст патча содержит добавленные / удаленные строки что соответствует <regex>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...