我在使用 git 設定檔案權限時遇到問題。我想將存盤庫中的所有檔案設為 644。當我第一次創建存盤庫時clone,這些檔案混合了不同的權限:
-rw------- 1 username group 2305 Oct 25 15:16 addquotes.sas
-rw------- 1 username group 675 Oct 25 15:16 ama_permission.sas
-rw------- 1 username group 1581 Oct 25 15:16 append_words.sas
-rwx------ 1 username group 3688 Oct 25 15:16 sasv9_u8.cfg
-rwx------ 1 username group 1489 Oct 25 15:16 backtest/bt_means.sas
-rwx------ 1 username group 490 Oct 25 15:16 backtest/correct_vname.sas
-rwx------ 1 username group 838 Oct 25 15:16 backtest/gen_random_samples.sas
為了嘗試解決這個問題,我運行find . -type f | xargs chmod 644. 這會更改檔案系統上的權限,但當我執行以下操作時,只有少數權限顯示為已修改git status:
modified: sasv9_u8.cfg
modified: backtest/bt_means.sas
modified: backtest/correct_vname.sas
modified: backtest/gen_random_samples.sas
深入挖掘,我注意到顯示為已修改的檔案設定了所有者執行位。如果我運行find . -type f | xargs chmod 744(744vs 644,設定所有者執行位),那么所有檔案都會出現在git status命令中。
有沒有辦法讓 git 在不設定所有者的執行位的情況下識別權限?這種行為似乎很奇怪。
uj5u.com熱心網友回復:
值得一提的兩點:
git不存盤檔案的整個 unix 權限范圍:它只存盤“常規檔案”和“可執行檔案”,git表現得像一個正常的程序,不會試圖繞過你的umask;您看不到該group或other部分的訪問權限的原因可能是因為您的 umask 設定為0077
“常規檔案”將被檢出-rw-rw-rw-- 減去您的 umask ;一個“可執行檔案”將被檢出-rwxrwxrwx——同樣,減去你的 umask。
關于你所看到的:
- 我的猜測是您的 umask 設定為
0077(沒有權限group和other),因此“常規檔案”被檢出為-rw-------“可執行檔案”為-rwx------ - 如果你運行
chmod 644你的檔案,git檢測到以前可執行的檔案不再是可執行的,這些檔案就會出現, - 我很驚訝設定
chmod 744使git檢測“可執行”檔案的更改:在我的機器上,它看起來git只檢查(linux)可執行標志設定user以確定檔案是否應存盤為可執行檔案;預計會檢測到“常規檔案”的更改。
如何“修復”這個:
- 也許你的 umask 如此嚴格是有原因的,所以也許你的情況是正確的;
- 如果您的 umask 限制太多:選擇一種方法將其設定為合適的值;
- “修復”現有檔案:正如@torek 建議的那樣,最簡單的方法可能是使用
Xchmod 選項,它只有在至少設定了一個可執行標志時才會設定可執行標志:
# you seem to want to give rw (and possibly x) access to the group :
chmod -R g rwX *
# perhaps r (and possibly x) to "others" :
chmod -R o rX *
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/338543.html
標籤:混帐
上一篇:不能使用“Gitadd-i”
