0
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?

Gitのパーミッション差分問題の解決方法

Posted at

どんな問題?

macで作業しても何も問題なかったのに、linuxでgit cloneとかgit pullしてたら、ファイルを何も変更してへんのに差分が出ることがある。

こんな感じで表示されるかも。

mode change 100644 => 100755 filename

ソフトによってはこんな表示もあるかも。

(Blob ▶ Executable)

これはファイルの実行権限の違いをGitが検知してるかららしいで。

原因は?

macとlinuxでは、ファイルシステムの扱いがちょっと違うねん。だから、同じファイルでも環境によってパーミッション(実行権限)が変わってまうことがあるって。

Gitはデフォルトでこのパーミッションの変更も「ファイルが変更された」って認識してまうから、差分として表示されてまうねんな。

解決方法

1. リポジトリごとに設定する

今作業してるリポジトリだけで、パーミッションの変更を無視したい場合:

git config core.filemode false

2. すべてのリポジトリで設定する

これから使うすべてのリポジトリで、パーミッションの変更を無視したい場合:

git config --global core.filemode false

設定できたか確認する

ちゃんと設定できたか確認してみよ:

git config core.filemode

falseって表示されたらOKやで!

既に差分が出てる場合

設定した後、差分がまだ残ってる場合は:

git status

で確認してみて。差分が消えてたらそのままで大丈夫やから!

補足

この設定をすると、ファイルの実行権限の変更はGitで管理されへんようになるんよ。

実行権限を意図的に変更したい場合(シェルスクリプトとか)は、別のコマンドが必要になるから覚えといてな:

git update-index --chmod=+x ファイル名

まとめ

  • macとlinuxでパーミッションの扱いが違うことが原因らしい
  • git config core.filemode falseで解決できるらしい
  • 全体に適用したい場合は--globalオプションをつけたらええみたい

困ったことがあったら、いつでも聞いてな!

0
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
0
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?