考虑一个包含以下行的Python配置文件:
THEME = 'gum'
THEME
键只出现一次,所以当我想知道THEME
是什么时,我会把文件格式化:
grep THEME pelicanconf.py
该文件保存在git中,我想在之前的所有git提交中查找THEME
,以便知道此行何时更改。
是否有一种优雅的方式来浏览git文件的整个历史记录?
答案 0 :(得分:2)
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
的所有变体,其中包含提交哈希值和日期。
@ -p
选项的@ knittl。
此外,找到了gitk
:see here的解决方案。
答案 1 :(得分:1)
实现目标的方法是使用bisect run <script>
像目前为止一样使用bisect,并使用带有脚本选项的bisect。
bisect搜索所有提交(在给定范围内),并使用合适的退出代码判断代码是好还是坏。
脚本将返回相应的跳过代码(或125代表不可测试 - 在您的情况下更合适)。
请注意,如果当前源代码良好,脚本(上例中的my_script)应该以代码0退出,如果当前源代码不好,则退出时使用1到127(含)之间的代码,但125除外
任何其他退出代码都将中止bisect进程。应该注意的是,一个程序终止于&#34;退出(-1)&#34;离开$? = 255,(参见exit(3)手册页),因为该值被&#34;&amp; 0377&#34;
当无法测试当前源代码时,应使用特殊退出代码125。如果脚本以此代码退出,则将跳过当前修订(请参阅上面的git bisect)。选择125作为用于此目的的最高敏感值,因为POSIX shell使用126和127来指示特定的错误状态(127表示未找到命令,126表示找到命令但不可执行---这些详细信息无所谓,因为它们是脚本中的正常错误,就“&#34; bisect run&#34;而言”而言。
git log
您可以将-p
标记传递给日志以跟踪特定文件
git log -p filename