哪个提交使文件可执行

时间:2014-07-17 15:13:34

标签: git

我在git存储库中有一个可执行文件。

如何找出哪个提交文件可执行?

我尝试了git log file.txt,但这并没有显示文件模式的变化,搜索手册页和谷歌也毫无结果。

3 个答案:

答案 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结束。常规文件在100644之前具有模式755。所以这会很快找到它:

git log --raw -- path/to/file | grep -B 1 '^:100644 100755 '

如果存在从非可执行文件到可执行文件的多个转换,则会找到所有这些转换。

答案 2 :(得分:0)

尝试使用git bisect How to use git bisect?

它可以帮助您以最佳方式选择提交进行搜索。您将首先选择两个提交,一个不工作,另一个工作。之后git会给你一个提交,你测试它是否有效并做出相应的响应。经过几次尝试,您将找到正确的提交。