gitで差分が出続ける現象の解決法

More than 3 years have passed since last update.

gitで差分が出続ける時がある。

$git status

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: app/hoge.php

no changes added to commit (use "git add" and/or "git commit -a")

commitしてもstashしてもresetしても出続ける。SourceTreeやGitHubのGUIで実行しても同じ。なにこの悪夢。


addしてみたら以下のwarningが出た

$ git add app/hoge.php

warning: LF will be replaced by CRLF in app/hoge.php


原因

Git が改行コードを CRLF へ勝手に変更しようとするらしい。


解決方法

addの前に以下のコマンドを打てばOK。改行コードの自動変換をしなくなる設定に。

$ git config --global core.autoCRLF false


補足

上記コマンドにより.gitconfigファイルでもともとtrueだった以下の設定がfalseになる。


gitconfig

core.autoCRLF=false


というわけで、

$ git config --global core.autoCRLF false

$ git add app/hoge.php
$ git commit -m "piyopiyo"

これで無事コミットできた。