brew update: 下列未跟踪的工作树文件将被合并覆盖:

374

我尝试运行brew update,但出现一个错误提示说如果合并本地更改会丢失。我试着提交本地的更改(不记得做过任何更改,但已经有一段时间了),但情况变得更糟了。

以下是输出内容:

MBP:Library User$ sudo brew update
error: The following untracked working tree files would be overwritten by merge:
    Library/Aliases/fastcgi
    Library/Aliases/htop
    Library/Aliases/nodejs
    Library/Aliases/ocio
    Library/Aliases/oiio
    Library/Aliases/pgrep
    Library/Aliases/pkill
    Library/Contributions/cmds/brew-beer.rb
    Library/Contributions/cmds/brew-dirty.rb
    Library/Contributions/cmds/brew-graph
    Library/Contributions/cmds/brew-grep
    Library/Contributions/cmds/brew-leaves.rb
    Library/Contributions/cmds/brew-linkapps.rb
    Library/Contributions/cmds/brew-man
    Library/Contributions/cmds/brew-mirror-check.rb
    Library/Contributions/cmds/brew-missing.rb
    Library/Contributions/cmds/brew-pull.rb
    Library/Contributions/cmds/brew-readall.rb
    Library/Contributions/cmds/brew-server
    Library/Contributions/cmds/brew-services.rb
    Library/Contributions/cmds/brew-switch.rb
    Library/Contributions/cmds/brew-test-bot.commit.html.erb
    Library/Contributions/cmds/brew-test-bot.css
    Library/Contributions/cmds/brew-test-bot.index.html.erb
    Library/Contributions/cmds/brew-test-bot.rb
    Library/Contributions/cmds/brew-tests.rb
    Library/Contributions/cmds/brew-unpack.rb
    Library/Contributions/cmds/brew-which.rb
    Library/Contributions/install_homebrew.rb
    Library/Formula/abcl.rb
    Library/Formula/abyss.rb
    Library/Formula/akka.rb
    Library/Formula/apollo.rb
    Library/Formula/appledoc.rb
    Library/Formula/arangodb.rb
    Library/Formula/autoconf.rb
    Library/Formula/automake.rb
    Library/Formula/avidemux.rb
    Library/Formula/bind.rb
    Library/Formula/bsdconv.rb
    Library/Formula/bsdmake.rb
    Library/Formula/camellia.rb
    Library/Formula/cbmbasic.rb
    Library/Formula/cdo.rb
    Library/Formula/checkstyle.rb
    Library/Formula/cifer.rb
    Library/Formula/clhep.rb
    Library/Formula/collada-dom.rb
    Library/Formula/crash.rb
    Library/Formula/crossroads.rb
    Library/Formula/css-crush.rb
    Library/Formula/curlftpfs.rb
    Library/Formula/dart.rb
    Library/Formula/dasm.rb
    Library/Formula/dfc.rb
    Library/Formula/di.rb
    Library/Formula/dsniff.rb
    Library/Formula/dupx.rb
    Library/Formula/dwatch.rb
    Library/Formula/eprover.rb
    Library/Formula/ext2fuse.rb
    Library/Formula/ezlupdate.rb
    Library/Formula/f3.rb
    Library/Formula/fastx_toolkit.rb
    Library/Formula/fceux.rb
    Library/Formula/findbugs.rb
    Library/Formula/freerdp.rb
    Library/Formula/funcoeszz.rb
    Library/Formula/fwknop.rb
    Library/Formula/gabedit.rb
    Library/Formula/gbdfed.rb
    Library/Formula/gconf.rb
    Library/Formula/git-encrypt.rb
    Library/Formula/glm.rb
    Library/Formula/gmap-gsnap.rb
    Library/Formula/gnu-arch.rb
    Library/Formula/gnunet.rb
    Library/Formula/gobby.rb
    Library/Formula/gptfdisk.rb
    Library/Formula/griffon.rb
    Library/Formula/grok.rb
    Library/Formula/gtk-chtheme.rb
    Library/Formula/gtkglextmm.rb
    Library/Formula/gtmess.rb
    Library/Formula/hg-flow.rb
    Library/Formula/hqx.rb
    Library/Formula/htop-osx.rb
    Library/Formula/htpdate.rb
    Library/Formula/imap-uw.rb
    Library/Formula/iozone.rb
    Library/Formula/ipbt.rb
    Library/Formula/ipe.rb
    Library/Formula/ispc.rb
    Library/Formula/ispell.rb
    Library/Formula/jigdo.rb
    Library/Formula/jing.rb
    Library/Formula/jless.rb
    Library/Formula/jpeginfo.rb
    Library/Formula/konoha.rb
    Library/Formula/legit.rb
    Library/Formula/libcouchbase.rb
    Library/Formula/libcuefile.rb
    Library/Formula/libextractor.rb
    Library/Formula/libglademm.rb
    Library/Formula/libgtextutils.rb
    Library/Formula/libinfinity.rb
    Library/Formula/libkate.rb
    Library/Formula/libqalculate.rb
    Library/Formula/libqglviewer.rb
    Library/Formula/libreplaygain.rb
    Library/Formula/libtool.rb
    Library/Formula/libvbucket.rb
    Library/Formula/libvo-aacenc.rb
    Library/Formula/libxmi.rb
    Library/Formula/lifelines.rb
    Library/Formula/makeicns.rb
    Library/Formula/mathgl.rb
    Library/Formula/meld.rb
    Library/Formula/mesalib-glw.rb
    Library/Formula/minisat.rb
    Library/Formula/minuit2.rb
    Library/Formula/mobile-shell.rb
    Library/Formula/movgrab.rb
    Library/Formula/mp3cat.rb
    Library/Formula/mpich2.rb
    Library/Formula/mrfast.rb
    Library/Formula/musepack.rb
    Library/Formula/ndiff.rb
    Library/Formula/net6.rb
    Library/Formula/nrpe.rb
    Library/Formula/nuttcp.rb
    Library/Formula/oath-toolkit.
Updating aa07533..3f070ef
Aborting
Error: Failed while executing git pull  origin refs/heads/master:refs/remotes/origin/master
5个回答

745

不要忘记获取源代码:

cd /usr/local/Homebrew
git fetch origin
git reset --hard origin/master

出现这种情况的原因是您试图更新brew,但brew本身要么不是最新的(很可能),要么通过某些操作系统更新进行了权限更改(也很可能),或者brew稍微有些损坏(不太可能)。

由于brew本身是一个git repo,因此您必须将其更新或重置为master分支版本。brew [默认情况下]位于/usr/local/Homebrew文件夹中,所以您需要:

  1. 前往该文件夹[第一条命令],这也应该会更新权限(如果没有,请参阅下面)
  2. 获取源代码[第二个命令],这意味着更新brew的远程分支的本地版本
  3. 基于REMOTE主分支进行硬重置[第三条命令](这也使用当前权限)。

如果您处于非sudo或管理员配置文件中,还可以对第一条命令执行chown

sudo chown -R `whoami` /usr/local/Homebrew
cd /usr/local/Homebrew
git reset --hard origin/master

要了解git reset,请参考这篇文章


3
在重置之前,我必须执行git fetch origin。谢谢。有趣的是这个答案是在过去的一天内添加的,我很幸运! - ghoppe
3
/usr/local 是一个常见的 Unix 操作系统中用于存储软件和程序的默认目录。git fetch origin 表示从远程 Git 仓库中获取最新的代码更新。fatal: 'origin' does not appear to be a git repository 是 Git 命令的一种错误提示,表示当前目录没有配置名为 "origin" 的远程 Git 仓库。fatal: The remote end hung up unexpectedly 表示在连接远程服务器时发生了意外错误或中断。 - Rich Bradshaw
11
它起作用了,但我必须使用“sudo”执行最后一步。 - altumano
3
这种情况经常发生在我身上,事实上,最近几个月我已经需要重复这些步骤三次了。相当烦人,SO有一个收藏功能很方便(话虽如此,谷歌搜索该错误通常会将此帖子作为第一个结果呈现)。 - totallyNotLizards
2
从 https://github.com/Homebrew/homebrew/issues/2906 中提供的建议对我起了作用: “sudo chown -R whoami /usr/local”,“cd /usr/local”,“git reset --hard origin/master” - Denis
显示剩余11条评论

107

几周前,我遇到了类似的问题,尝试更新旧的Homebrew安装文件时出现了错误。我执行了以下操作:

git reset --hard origin/master

/usr/local 这个路径解决了我的问题。

看起来其他人也遇到了这个问题。你是否查看过这里提出的任何解决方法


干得漂亮。谢谢你提供的链接! - Tyler DeWitt
提示他人:请尝试运行“git fetch origin”,如其他答案所建议 - 只有这样才能完全解决我的问题(除了brew没有看到任何更新之外,没有明显的问题;))。 - Gilead
今天早上我遇到了这个brew错误。通过一些搜索,我找到了这里。这个答案完全解决了我的问题。谢谢! - memoht
2
首先,您可能需要执行“cd usr/local”和“git remote add origin https://github.com/mxcl/homebrew.git”命令。另请参考https://dev59.com/Pm025IYBdhLWcg3wZ1Ny#j5-dEYcBWogLw_1bL4sr。 - s2t2

12

鉴于2012年提出的建议似乎有点不太安全,我想加入我的个人经验:

  1. 运行 brew doctor 命令。
  2. 如果你看到以下警告:

    Warning: The /usr/local directory is not writable.
    

    运行:

    sudo chown -R `whoami` /usr/local
    

    按照Chris Frisina的建议,解决权限问题。最后再次运行brew doctor以确保警告已经消除。

  3. 现在,您应该有一个

  4. Warning: You have uncommitted modifications to Homebrew
    

    可能可通过以下方式解决:

    cd /usr/local/Library && git stash && git clean -d -f
    

    正如Brew博士所建议的那样。该命令储存未提交的修改,以便在需要时可以返回并恢复它们。对我来说,这似乎比git reset --hard origin/master更安全。

  5. 如果您愿意,请查看官方故障排除指南,如果本文和其他SO用户提供的步骤无法解决您的问题。


cd /usr/local/Library && git stash && git clean -d -f 然后 brew update 就解决了我的问题。 - at0mzk

0

类似的答案,但如果您有不再被跟踪的文件,则需要额外的步骤,因此从/usr/local运行

git fetch origin
git clean -f
git reset --hard origin/master

0

这种方法可能比其他一些方法更简单。它包括:

  • 修复git问题,以便您可以再次委派管理变更。
  • 没有手动移动文件或目录。
  • 没有手动调整文件或目录权限。

步骤(附有说明的注释):

cd $(brew --repository)                              // see Note 1 below
git remote add brew https://github.com/Homebrew/brew // see Note 2 below
git pull brew master                                 // promising fast-forward report!
brew update                                          // see Note 3 below 

概述:
据我所知,此问题的实际原因是仓库网址的更改。现在是brew,之前是brew.git。(完整的最新网址:https://github.com/Homebrew/brew

注1:这个第一条命令可以让你从文件结构中的任何位置进入正确的目录。对于我来说,目录结构与其他人显示的不同(Mac OS 10.11.16),但使用这个命令,这些差异就不重要了。

注2:这个第二条命令将正确的远程网址添加到一个新的别名中;我这样做只是为了以防万一这种方法没有达到我想要的效果,我需要再次使用先前的地址。由于新的远程工作正常,我会邀请其他人评论如何简单地更改由origin别名的网址。我很乐意更新答案以反映适用于您的内容。

注3:这个第四条命令恰好有期望的结果:它报告了大量的更新,包括特别好的报告“==> Migrated HOMEBREW_REPOSITORY to /usr/local/Homebrew!”(强调他们的)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接