1. ホーム
  2. git

[解決済み] Git リポジトリでコードが削除された箇所を探す

2023-04-17 17:03:32

質問

削除されたコードを見つけるにはどうしたらよいですか?

結局、これで作成された場所を探しました。

$ 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 について少し読んでみると、案の定、犯人と思われるリビジョンが1つだけ表示されました...。また git show rev | grep 'some code' は空っぽになります...

何が間違っているのでしょうか?

どうすればよいのでしょうか?

ふむふむ、これは私のために動作します。

$ 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

というか、これでは意味がないのでは?