How do I search git history for a disappeared line?

Git

Git Problem Overview


I need to search the history of a specific file in a git repository to find a line that is gone. The commit message will not have any relevant text to search on. What command do I use?

Further details: this is the history of my todo list out of our non-stellar task tracking software. I've been keeping it for two years because there's just not enough information kept for me in the software. My commit messages usually have only the task ids, unfortunately, and what I need to do is find a closed task by subject, not by number. Yes, the real solution is better task tracking software, but that is completely out of my hands.

Git Solutions


Solution 1 - Git

This is a job for the pickaxe!

From the git-log manpage:

> -S<string> > > Look for differences that introduce or remove an instance of <string>. Note that this is different than the string simply appearing in diff output; see the pickaxe entry in gitdiffcore(7) for more details.

You can of course use further options to narrow it down, for example:

git log -Sfoobar --since=2008.1.1 --until=2009.1.1 -- path_containing_change

There is also: > -G<regex> > > Look for differences whose patch text contains added/removed lines that match . > To illustrate the difference between -S --pickaxe-regex and -G, consider a commit with the following diff in the same file: > > > + return frotz(nitfol, two->ptr, 1, 0); > > ... > > - hit = frotz(nitfol, mf2.ptr, 1, 0); > > While git log -G"frotz\(nitfol" will show this commit, git log -S"frotz\(nitfol" --pickaxe-regex will not (because the number of occurrences of that string did not change).

Solution 2 - Git

How about git log --stat | grep 'filename' to begin narrowing it down?

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionskiphoppyView Question on Stackoverflow
Solution 1 - GitCascabelView Answer on Stackoverflow
Solution 2 - GitKzqaiView Answer on Stackoverflow