1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gitでfile permissionが差分として検出された時

Posted at

はじめに

gitでfile permissionの変更が検出され、少し手を焼いたので調べたことと対処方法を載せておきます

OS:Windows-WSL(Ubuntsu 20.0.4)
VScode + forkでgit周りの作業をしています

結論

`git config --local core.fileMode false` で解決します

症状

いつも通りmasterを`git pull`しようと思ったら、
error: Your local changes to the following files would be overwritten by merge:

とエラーが出てきました。これは、
「localにあるファイルが変更されてて、mergeする時に上書きされてしまうで」
ということなので、git stashなり、git add -> git commitすればいいのですが、git stash
discard changeもできないので困りました。ファイルの差分をVScodeで見ても何も変更がありません。forkで確認すると、ありがたいことに以下の記述が。

changed file mode 100755 → 100644

chmodコマンドを使用した覚えはないものの、file permission(読み込み限定とか、変更できるユーザーが限定されるとか、そういうやつ)が書き換わっていたようです。

解決策

少しググってみると、同じような症状に会った人の英語記事が出てきたので読みました。ざっくり要約すると

①Gitはファイルの所有者の変更のみ検出する ②ファイルをcheck out した時に、PC環境によってはfile permissionが変わり得る ③Gitの設定で検出をオフにできる ③repoのcontributerにWindowsユーザーがいるときはオフにしといた方がいい(おまけ)

ということでした。pullしたリポジトリは自分だけWindowsメインで開発しているので、それが原因でfile permissionが書き換わっていたようです。

ということで、ターミナルでlocalの設定を調べると

$ git config --get --local  core.filemode
true

localではfile permissionの変更が検出されるようになっていました。これを変えてあげればいいので

$ git config --local core.fileMode false
$ git config --get --local  core.filemode
false

これでいいですね。僕の環境では実行直後にlocal changesが綺麗になくなりました。

参考資料

https://medium.com/@tahteche/how-git-treats-changes-in-file-permissions-f71874ca239d
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?