只需將some.sh
文件轉換爲可執行文件(chmod 755 ...
),即可更新權限,但不會更新內容。有沒有一種方法來提交文件到Git的,所以可執行位將被還原/上克隆/結賬/拉設置?僅在git中更新文件權限
更新:我如何跟蹤新的權限被提交到github
?
只需將some.sh
文件轉換爲可執行文件(chmod 755 ...
),即可更新權限,但不會更新內容。有沒有一種方法來提交文件到Git的,所以可執行位將被還原/上克隆/結賬/拉設置?僅在git中更新文件權限
更新:我如何跟蹤新的權限被提交到github
?
默認情況下,如果您更改它們,git將更新文件權限。
如果在修改權限時看不到任何更改,則可能在git中有一個忽略文件模式的配置。
看看你的項目,在.git
文件夾爲config
文件,你會看到這樣的事情:
[core]
filemode = false
您可以將其更改爲true
在你喜歡的文本編輯器中,或運行:
git config core.filemode true
然後,你應該能夠正常提交你的文件。它只會提交權限更改。
不適合我。
模式是真的,文件權限已被修改,但git說沒有工作要做。
git init
git add dir/file
chmod 440 dir/file
git commit -a
問題似乎是git只能識別某些權限更改。
正確 - 'git'確實只跟蹤文件是否可執行,而不是全套* nix權限。所以你必須在可執行文件之間切換文件/不是因爲它認爲你已經改變了值得提交的文件... – twalberg
我找不到明確的文檔:我可以使用什麼後動作觸發器來設置相應的文件? – Otheus
好吧,'git'中有一個'post-checkout'掛鉤,它可以覆蓋一些情況,但我不確定這是否會覆蓋更新工作樹中所有文件的可能性。你可能會更好,只需在你的倉庫中有一個額外的shell腳本來設置相應的東西。另外,還有一些項目擴展了'git'來存儲元數據,但我從來沒有真正嘗試過其中任何一個...... – twalberg
@fooMonster文章爲我工作
# git ls-tree HEAD
100644 blob 55c0287d4ef21f15b97eb1f107451b88b479bffe script.sh
正如你可以看到該文件具有644權限(忽略100)。我們想將它更改爲755:
# git update-index --chmod=+x script.sh
提交更改
# git commit -m "Changing file permissions"
[master 77b171e] Changing file permissions
0 files changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 script.sh
這隻適用於「可執行」標誌 –
謝謝!我如何跟蹤權限更改提交給'github'? – BreakPhreak
你可以在查看文件時看到它(例如,在[Rails gitignore file](https://github.com/rails/rails/blob/master/.gitignore)上,你會發現100644作爲文件權限) –
使用git在Windows上更改權限(實際上更改文件權限和提交):http://blog.lesc.se/2011/11/how-to-change-file-premissions-in-git.html – fooMonster