2014-07-17 40 views
1

我有一个可执行文件在git仓库中。哪个提交可执行文件

如何找出哪个提交使该文件成为可执行文件?

我试过git log file.txt但这并没有显示文件模式和搜索手册页的变化,谷歌没有结果。使用Git

回答

1

用途:

git log -p file.txt | grep --before-context 7 "old mode" 

(如果你提交的文本是多线长,增加了前上下文行选项,它包括提交ID)

文件模式改变包括“旧模式”和日志中的“新模式”,这是如何工作的。

+0

谢谢!这正是我一直在寻找的。当有人不小心做出可执行的东西时,这是我的个人宠物。 – donatJ

0

尝试平分How to use git bisect?

它可以帮助你通过最优化的方式采摘提交搜索。你将从选择两个提交开始,一个提交不起作用,另一个提交。之后,git会给你一个提交,你测试它是否工作并做出相应的响应。几次尝试后,您会发现正确的提交。

1

git log --raw(或git whatchanged,其跳过合并为好)中提取的模式:

:100644 100644 bcd1234...... M file0 

第一八进制数是老模式,第二个是新的。如果文件变得可执行,则旧模式将以644结束,新模式将以755结束。在644755之前,常规文件的模式为100。所以这会很快找到它:

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

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