考虑一个包含以下行的Python配置文件:
THEME = 'gum'
THEME
关键字只出现一次,所以当我想知道THEME
是什么时,我会搜索这个文件:
grep THEME pelicanconf.py
文件保存在git中,我想在之前的git提交记录中grep
THEME
,以便知道何时更改了这行代码。有没有一种优雅的方法来grep一个git文件的整个历史记录?
考虑一个包含以下行的Python配置文件:
THEME = 'gum'
THEME
关键字只出现一次,所以当我想知道THEME
是什么时,我会搜索这个文件:
grep THEME pelicanconf.py
THEME
,以便知道何时更改了这行代码。git log -S'THEME' -- pelicanconf.py | xargs -n 1 git show
显示更改了 THEME
的每个提交的内容。
但是它会打印出完整的提交记录,而不仅仅是更改。
var="THEME"; git log -S"$var" -p -- pelicanconf.py | egrep "$var|commit|Date:"
将显示所有包含 THEME
变量的变体,包括提交哈希和日期。
感谢 @knittl 提供的 -p
选项。
此外,还可以使用 gitk
解决问题,请参见此处。
THEME
,不要gum
。然而,即使是git log -S'THEME' -- pelicanconf.py
也无法解决问题。 - Adam Matangit log -p
代替git log … | xargs …
。 - knittlbisect run <script>
。继续像以前一样使用bisect,并使用带有脚本选项的bisect。git log
您可以在日志中传递 -p
标志来跟踪特定文件。git log -p filename
git log -S'THEME' -- pelicanconf.py
有帮助吗? - knittl