プロジェクト

全般

プロフィール

Gitトラブルメモ

ファイルのパーミッションが違うために変更と扱われる

ファイルの内容は変更がないのに、変更ありとGitに判定されます。主にWindows上のGit for WindowsやCygwin gitで発生します。

work$ git status -s
A  libs/butterknife-7.0.1.jar
 M src/main/java/com/torutk/android/notepad/InputActivity.java

work$

差分を見ようとすると

work$ git diff
diff --git a/app/src/main/java/com/torutk/android/notepad/InputActivity.java b/app/src/main/java/com/torutk/android/notepad/InputActivity.java
old mode 100644
new mode 100755

work$

と、ファイルのパーミッションが違うと(だけ)出てきます。

回避策

使用しているリポジトリの設定項目 core.filemode をfalseに設定します。

$ git config core.filemode false 
  • --global で設定しても効きませんでした。これは、gitリポジトリ作成時にcore.filemodeを参照してリポジトリ設定として書き込まれるため、それ以降globalな設定を変更しても既に作られたリポジトリの固有設定が優先されるためです。

また、これ以後作成するリポジトリをfilemode=falseにするため、--globalの設定もしておきます。

$ git config --global core.filemode false 

クリップボードから画像を追加 (サイズの上限: 1 GB)