I noticed I wasn't able to find a file with a specific name anywhere in my codebase. I expected it to be there, so I wondered when it had been added and deleted from the codebase according to the git commit history.
This calls for running a git log, but with a couple flags. First, I'll include
--name-status so that each commit that is listed includes the file names with
the change status (i.e. A for added and D for deleted). Then the
--diff-filter flag tells git that I am only looking for Added and Deleted
files. Then the -- indicates that a file path will follow, even a regex
pattern is valid here.
git log --name-status --diff-filter=AD -- '*_mock_payment_form.*'I'm looking for what is called a partial in Rails. I know the filename
consists of _mock_payment_form. The leading * is so that I can be vague
about the directory this might be found in. That's useful if this file was
potentially moved around. The trailing .* indicates the file extension which I
also want to be vague about.
For any of the commits returned by this git log, I can grab the SHA and run
git show <SHA> to see the full picture of that commit.
Another flag that might be useful to add is the --all flag which will look
across all refs/branches instead of just the branch (main) that I'm currently
on.
git log --all --name-status --diff-filter=AD -- '*_mock_payment_form.*'Perhaps I'm thinking of a file that was added on an abandoned feature branch.
--all will help turn up that in the results as well.