Permissions
git checkout – 文件更改現有文件的權限
當我編輯一個文件,然後想要撤消我的更改時,我使用
git checkout -- file.txt
問題是
git
不保留現有文件的文件權限。file.txt
有權限644
,但在git checkout
有權限之後600
(我認為來自我的umask
)我知道 git 不儲存文件權限,並且我不希望在創建新文件時記住權限。
但是在這種情況下,文件存在。為什麼不能
git
保持原來的權限?這可以通過一些醜陋的黑客(一些鉤子)來解決嗎?
當 Git 檢出文件時,它預設使用系統上文件的 umask,如果它是一個目錄或者它被標記為一個執行檔,則設置可執行位。那是因為 Git 刪除並重新創建了文件,所以它不會保留現有文件的權限。
這實際上是設計使然,因為有一個選項,
core.sharedRepository
可以讓您配置要簽出的文件的權限。預設情況下,它設置為umask
,這意味著使用您的 umask。如果您想在儲存庫中使用不同的行為,您可以進行不同的設置,例如 to0644
,它將使用該值。如果您願意,可以使用
post-checkout
掛鉤將權限更改回來,儘管這可能並非在所有情況下都有效。