git - 不区分大小写的 git 镐搜索

标签 git

我正在尝试查找引入了特定字符串或其任意大写(例如 foobarFooBarfooBar)的所有提交/在 git 存储库中删除。

基于此SO answer (涵盖了不同的基本用例),我首先尝试使用 git grep

git rev-list --all | xargs git grep -i foobar

这太糟糕了,因为它只提供了关于字符串是否存在于提交中的信息,所以我最终得到了大量多余的提交。

然后我尝试了 pickaxe,这让我完成了大部分工作,例如

git log --pickaxe-regex -S'foobar' --oneline

这只得到了小写的foobar。我尝试了 -i 标志,但这似乎不适用于 --pickaxe-regex 选项。然后我求助于使用这样的模式,这让我更进一步:

git log --pickaxe-regex -S'.oo.ar' --oneline

有没有办法让--pickaxe-regex进行不区分大小写的匹配?

我正在使用 git v1.7.12.4。

最佳答案

-i 与镐一起使用的方式(参见 commit accccde,git 1.7.10,2012 年 4 月)是:

git log -S foobar -i --oneline
# or
git log --regexp-ignore-case -Sfoobar
# or
git log -i -Sfoobar

请注意,对于 1.x git 版本,此选项不适用于正则表达式,只能用于固定字符串。它仅适用于 git 2.0 和 commit 218c45a 之后的正则表达式, git 2.0,2014 年 5 月。

关于git - 不区分大小写的 git 镐搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25384842/

相关文章:

git - 删除 GitHub 草稿版本的命令

git - 从 git 存储库中删除旧的提交信息以节省空间

git - 如何使用 gpg-agent 批量签署 git 标签

git - 如何将 Docker 构建的上下文定义为本地分支之一上的特定提交?

git 告诉我我的文件被更改了,但我看不出有什么不同

git 。当推送不处理 .git/info/exclude 时忽略文件

git - git 的 merge 冲突解决是否比其他 SCM 和 merge 工具更高效?

GitHub - 私有(private)与公共(public)合作者

git - 如何删除git中的第一个提交?

git - git rebase --continue 的行为不一致