Git:查找已删除的代码

这使我疯狂。

我如何find被删除的代码?

我最终find了它创build的地方:

$ git log --pretty=oneline -S'some code' 

这足够好,但我也很好奇,find删除的地方,到目前为止,没有骰子。

首先,我尝试了git diff HEAD..HEAD^|grep 'some code' ,每次扩展范围,直到find被删除的行。 不错,所以假设我发现它在范围HEAD^^..HEAD^^^ ,然后我做git show HEAD^^^git show HEAD^^grep ,但代码无处可寻!

然后,我读了一下git bisect ,果然,它给了我一个罪魁祸首应该是一个单一的版本…再次, git show rev|grep 'some code'出现空…

什么? 我究竟做错了什么?

谢谢!

哼,为我工作:

 $ git init
在/Users/pknotz/foo/.git/中初始化了空的Git仓库

 $ echo“Hello”> a

 $ git添加一个

 $ git commit -am“初始提交”
 [master(root-commit)7e52a51]初始提交
  1个文件已更改,1个插入(+),0个删除( - )
 创build模式100644 a

 $ echo“World”>> a

 $ git commit -am“更具体”
 [master 080e9fe]更具体
  1个文件已更改,1个插入(+),0个删除( - )

 $ echo“Hello”> a

 $ git commit -am“不太具体”
 [master 00f3fd0]不太具体
  1个文件已更改,0个插入(+),1个删除( - )

 $猫a
你好

 $ git log -SWorld
提交00f3fd0134d0d54aafbb9d959666efc5fd492b4f
作者:Pat Notz <patnotz@gmail.com>
date:2009年10月6日星期二17:20:48

    不太具体

提交080e9fe84ff89aab9d9d51fb5d8d59e8f663ee7f
作者:Pat Notz <patnotz@gmail.com>
date:2009年10月6日星期二17:20:33

    更加详细一些

或者,这不是你的意思?

git log -S<string>做这个工作,但是如果你需要进行更复杂的search,你可以使用git log -G<regex>

man

-G<regex>

查找补丁文本包含匹配<regex>添加/删除行的差异。

如果你的仓库在github.com上,它有一个集成的function来search。 它以毫秒为单位进行响应,并在已删除的代码中进行search