尝试更新brew包管理器时出错

Chi*_*ron 47 macos homebrew package-managers

我试图更新brew:

sudo brew update
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

错误:合并将覆盖对以下文件的本地更改:

列出了很多文件

错误:执行git pull http://github.com/mxcl/homebrew.git master时失败

什么出了什么问题?

Tur*_*adg 78

几天前,Homebrew中出现了一个错误.要修复该错误,您可以git reset --hard FETCH_HEAD在Homebrew安装中运行.由于这不会修复已被视为已修改的文件,因此您也可以运行git checkout Library以使用最新文件替换结帐.(这会擦除所有编辑内容,因此您可以采取适当的措施.)

  • @rafa sudo chown -R $(`whoami`)/ usr/local (8认同)
  • 我在/ usr/local中运行git reset --hard FETCH_HEAD但是我得到了:致命的:模糊的参数'FETCH_HEAD':版本和文件名 (3认同)
  • 原因是我曾经用sudo运行brew.这创建了一些具有错误权限的文件(由root拥有.)一旦我知道文件,然后运行git reset,事情就好了.谢谢! (2认同)

JGa*_*rdo 34

接受的答案是正确但不完整的.如果你得到的错误

错误:合并将覆盖以下未跟踪的工作树文件:

然后转到终端并运行这些命令

cd /usr/local
Run Code Online (Sandbox Code Playgroud)

然后

git reset --hard FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

然后

git checkout Library
Run Code Online (Sandbox Code Playgroud)

这应该让一切井然有序.然后跑

brew update
Run Code Online (Sandbox Code Playgroud)


pix*_* 67 15

让我添加:cd /usr/local/git 然后运行git reset --hard FETCH_HEAD


小智 11

转到您的终端并运行这些命令

cd /usr/local

sudo git reset --hard FETCH_HEAD

sudo git checkout Library
Run Code Online (Sandbox Code Playgroud)


Jos*_*sen 10

对于那些使用OS X El Capitan的人,您的问题可能是系统完整性保护.此处记录了修复程序.

如果/usr/local已存在,请在终端中运行以下命令:

sudo chown -R $(whoami):admin /usr/local
Run Code Online (Sandbox Code Playgroud)

如果/usr/local不存在:

首先,尝试创建/usr/local正常方式:

sudo mkdir /usr/local && sudo chflags norestricted /usr/local && sudo chown -R $(whoami):admin /usr/local
Run Code Online (Sandbox Code Playgroud)

如果您看到权限问题,请尝试:

  1. 重新启动进入恢复模式(启动时保持Cmd + R)并访问终端.
  2. 在那个终端运行中: csrutil disable
  3. 重新启动回OS X.
  4. 打开终端应用程序并从上面执行该行
  5. 重新启动进入恢复模式并再次访问终端.
  6. 在该终端执行: csrutil enable
  7. 重新启动回OS X,你就可以写入/ usr/local并安装Homebrew.


小智 5

出于没有理由(或者至少没有人理解),存储库/usr/local(这是brew安装!)丢失了它的远程存储库.所以,既不是a git reset也不是git pull肯定没有用brew update.

你怎么知道发生了什么?检查/usr/local/.git/config是否有如下所示的行:

[remote "origin"]
url = http://github.com/mxcl/homebrew.git
fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

如果不这样做:

cd /usr/local
git remote add origin http://github.com/mxcl/homebrew.git
git pull origin master
Run Code Online (Sandbox Code Playgroud)