2014-07-17 37 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 ' 

如果有多個從非可執行文件到可執行文件的轉換,將會找到所有這些文件。