救命 我的檔案被 Git 修改權限

2020-06-01

如標題所言,最近被 Git 玩弄得很慘
程式碼目錄突然被修改了權限,讓我不能新增刪除檔案,編譯的時候就卡住了

於是我使用 Git 還原大法:把檔案全部刪除,再用 git reset --hard ,結果還是一樣
(還要先 chmod 才能用 Windows 資料夾刪檔案)

我開始找資料,整理了各家說法之後終於找到了解答


原來 Git 會記錄一套特別的檔案權限,使用這個 command 可以列出檔案的權限:

$ git ls-files --stage
  • 100644 是一般的檔案,這就是讓我不能修改及編譯的元兇
  • 100755 是可執行的檔案

想要修改權限,可以用 update-index 的 Git command,但是我想把整個目錄下的檔案一次全部變成可執行的權限

那就這麼做:

$ git add --chmod=+x .

最後再 commit 就完成了!
(如果資料夾還是不能新增檔案,那就把檔案全部複製到另一個資料夾,新的資料夾就沒有問題了)

以前用 Windows 版的 Git 沒碰過這樣的問題,後來改用 Cygwin 的 Git 就碰到了
還好找到了解法,以後不用再害怕檔案被 Git 修改權限了


Reference:
https://stackoverflow.com/a/40979016
https://git-scm.com/docs/git-update-index