gitで管理している資材が編集してないのにeclipseで編集マークが付く


ハマった

いつも作業するのにWindowsOSでcygwinを使っていた。
いつも通りGitBucketでリポジトリを作成し、ローカル資材をpushして、eclipseでインポートしたら、リポジトリ内の資材のすべてに > が付与された。

え、なんで!?

さっきgit initしてadd -> commit -> pushしたばかりの資材。
ファイルを個別に開くことなんてしてないし、ローカルの履歴にももちろん何もない。
cygwinでgit diffしてもなにもない。
これが気持ち悪くてかなり解消するのに少し嵌りました。

試行錯誤する

Eclipseからコミットしてみる

最初は環境が壊れたか!?とか思ってテンパっててgoogleで
 "編集してないのにEclipseで編集マークがつく"
とかセンスのない検索をしてましたが、冷静になってみた。
まず、Eclipseが"これ編集されてるよ!"って言ってるくらいだからEclipseからだと変更がコミットできるのか?と思い、プロジェクトルートでTeam -> Commitを実行してみた。

できた!
大量のファイルがcommit -> pushされたらしい。
そしてEclipse上の > は消えた。
何が起きた??

これをGitBucketのほうでHistoryを確認してみると、

File renamed without changes

なんでー
差分がわからないよー

Cygwinでdiffを確認する

ここで気づく。
あれ?EclipseからcommitしたからCygwinのほうのでpullする?
(ほんとはEclipseでインポートしてるから必要ない。。。)
しかしCygwinでgit diffを実行すると大量の差分が!!

old mode 100644
new mode 100755

これだけ。
ファイル内の差分はなし。
うしろ3ケタは権限か??
Eclipseでファイルの権限が書き換わってる???
よくわからないけどCygwinから再度add -> commit -> push
当然Eclipseのほうで > が復活。

よくわからないけどこれをキーワードにググる

たどり着いた解決策

cygwinのほうで

git config core.filemode false

を実行。
ファイルモードをgitとしては無視するようなconfigなのかな。
(調べてない)

しかしこれを実行してEclipseのほうで資材をRefreshしたら > は消えてくれた。

今までもいろいろとCygwinでcloneしてEclipseでインポートはやってきたけど、なぜ今になってこんなことになったのか。。。
謎。。。

参考