我在git存储库中有一个可执行文件。
如何找出哪个提交文件可执行?
我尝试了git log file.txt
,但这并没有显示文件模式的变化,搜索手册页和谷歌也毫无结果。
答案 0 :(得分:1)
使用:
git log -p file.txt | grep --before-context 7 "old mode"
(如果你的提交文本是多行,请增加before context line选项,使其包含提交ID)
文件模式更改包括日志中的“旧模式”和“新模式”,这就是它的工作原理。
答案 1 :(得分:1)
git log --raw
(或git whatchanged
,也会跳过合并)提取模式:
:100644 100644 bcd1234... 0123456... M file0
第一个八进制数是旧模式,第二个是新模式。如果文件变为可执行文件,则旧模式将以644
结束,而新模式将以755
结束。常规文件在100
或644
之前具有模式755
。所以这会很快找到它:
git log --raw -- path/to/file | grep -B 1 '^:100644 100755 '
如果存在从非可执行文件到可执行文件的多个转换,则会找到所有这些转换。
答案 2 :(得分:0)
尝试使用git bisect How to use git bisect?
它可以帮助您以最佳方式选择提交进行搜索。您将首先选择两个提交,一个不工作,另一个工作。之后git会给你一个提交,你测试它是否有效并做出相应的响应。经过几次尝试,您将找到正确的提交。