brew updateで"error: Your local changes to the following files would be overwritten by merge"
原因:/usr/local/ で謎の差分があった
Homebrewは"/usr/local" ディレクトリを丸ごとgit管理しており、ここでワーキングツリーに差分があるとgit pullできないためにbew updateが失敗してしまうようです。具体的に私のケースでは、
$ cd /usr/local
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: Library/Formula/bison.rb
のような状況になっており、何故か"/usrl/local/Library/Formula/bison.rb"に未コミットの変更が加えられていました。(自分でやったのかもしれないけど覚えてない)
解決方法
この未コミットの変更を退避させて最新版のorigin/masterに追従すればよいです。$ cd /usr/local/
$ git stash save
$ git fetch
$ git merge --ff-only origin/master
ここまでうまく行けば、
brew update
が成功するはずです。
カテゴリ:
MacOSX