WSL のターミナルから Windows 側においてあるプロジェクトで git status を確認したところ大量に更新があると表示され、不思議に思い git diff を行うと以下のようにファイルのパーミッションが変わっていると大量に出てきた。
$ git diff
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
diff --git a/Capfile b/Capfile
old mode 100644
new mode 100755
diff --git a/Gemfile b/Gemfile
old mode 100644
new mode 100755
(以下略)
ファイルのパーミッションを変えた記憶は無いが、Windows と Linux ではファイルのアクセス権周りの挙動が異なるようだ。パーミッションが違うからといって以下のように chmod しても Windows のファイルには反映されない。
$ ls -al .gitignore
-rwxrwxrwx 1 ryomatsu ryomatsu 585 Jun 27 17:26 .gitignore*
$ chmod 644 .gitignore
$ ls -al .gitignore
-rwxrwxrwx 1 ryomatsu ryomatsu 585 Jun 27 17:26 .gitignore*
手っ取り早くこの状態を解決するには git でパーミッションを無視するよう設定を変えると良い。
$ git config core.filemode false
$ git diff
$ git status
On branch master
Your branch is up to date with 'origin/master'.
これでファイルのパーミッションを無視して git を利用できる。
コメント