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"
これで無事コミットできた。