2011-08-13 62 views
54

我在Windows上通過cygwin使用git,很快就決定使用filemode=false(因爲否則我在初始git克隆後會發生很多變化)。我絕對不會對跟蹤權限感興趣,唯一需要考慮的是某些文件是可執行的。不時,我發現某些文件上的x標誌會丟失,我強烈認爲這是因爲git。如何阻止git使cygwin上的文件不可執行?

我很高興能夠在需要時執行chmod a+x ...的解決方案。

回答

95

我相信你想git update-index --chmod=+x <file>,然後提交。

+0

我不認爲這會有所幫助,因爲我使用'FILEMODE = FALSE',所以我想我以後做什麼從git中獲取文件(而不是把它們放在git中)。每當git更改或創建文件時都會應用這些內容。而且,它應該自動運行。 – maaartinus

+2

[The docs](http://www.kernel.org/pub/software/scm/git/docs/git-update-index.html#_configuration)特別向filemode = false的系統推薦此命令。如果我理解正確,則該設置僅適用於_automatic_檢測權限更改。 Git仍然存儲一個文件模式,這是您執行'git ls-tree HEAD'時的第一列。如果它顯示爲644而不是755,那麼git在寫入該文件時不會設置可執行位。 –

+0

我看到我誤解了'filemode = false'。不知何故,我想,它會禁用存儲的位,但「索引和工作副本之間的可執行位差異被忽略」,而不是。 – maaartinus

4

我遇到了同樣的問題。 git update-index --chomd = + x不適用於我。

我使用chmod + x,然後提交,它工作完美。

+0

或者使用update-index,commit,再次檢出文件。 –

5

您應該從git update-index --chmod=+x <file>開始。

但是這並不會改變你的工作拷貝,爲:

git checkout .