Homebrew显示与git相关的错误



最近,当我用任何包运行brew install时,在开始安装之前,Homebrew总是显示以下与git相关的输出。

error: Cannot determine remote HEAD
fatal: ambiguous argument 'refs/remotes/origin/master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
error: Cannot determine remote HEAD
fatal: ambiguous argument 'refs/remotes/origin/master': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

备注:只是澄清一下,是的,这是打印两次的同一条消息
(但可能每条消息都与不同的存储库相关(

我试图在运行brew doctorbrew cleanup时进行一些自动修复,但上面的输出仍然显示出来。

这是什么意思?也许在安装了一些软件包后有什么东西被更改了?

你对如何解决这个问题有什么建议吗?

由于网络问题,我在MacBook Pro M1上出现了类似的错误,这对我来说很有效:

rm -rf /opt/homebrew

或者它可能在另一条路径

rm -rf /etc/homebrew

检查两个目录中的homebrew目录并将其删除。

这对我有效:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
git config --global core.compression 0
git config --global http.postBuffer 1048576000
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

TL;DR:如果您只想要解决方案/解决方法,请忽略";我是如何发现这个问题的";第节和最后的附录。

我是如何发现问题的

在下运行酿造命令后

brew update -vd --preinstall >brewlog.txt 2>&1

通过检查brewlog.txt文件,我意识到当Homebrew试图访问我在Github.com帐户上创建的两个tap以";提取物";一些软件包的旧版本,以便安装这些旧版本,因为Homebrew特别建议使用此过程(请参阅末尾的附加说明(。

特别是,在自动更新期间,Homebrew尝试访问这两个抽头,即相应的两个存储库,并尝试运行以下两个命令。

git remote set-head origin --auto
git symbolic-ref refs/remotes/origin/HEAD

但是,由于我在Github帐户上创建的那些tap存储为空存储库,因此没有提交,也没有HEAD,因此git会用Cannot determine remote HEAD和其他错误消息进行回复。

我是如何理解该做什么的

为了解决这个问题,或者至少为了找到一个变通方法,我只是向存储库添加了一些内容。特别是,brewlog.txt文件显示,上面的git命令是从以下类型的路径中执行的。

/usr/local/Homebrew/Library/Taps/GITHUBACCOUNTNAME/PACKAGENAME

所以我浏览到了这两个文件夹,我注意到本地实际上有一个名为Formula的文件夹,其中包含一个名称为PACKAGENAME.rb的文件。我想,这些内容是由Homebrew在安装旧版本时存储的。

我是如何解决的

因此,为了"填充"我的两个Github抽头,我只需从两个文件夹中的每个文件夹运行以下命令,就可以将这些内容添加到远程抽头中。

git add Formula
git commit -m "First commit"
git push

现在,这两个水龙头里有一个头,Homebrew不再抱怨了。

有关安装旧版本的进一步说明

在过去,只需在Github上找到"正确的提交"(查看此处了解详细信息(并编写这样的内容,就可以安装Homebrew包的旧版本。

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/PACKAGENAME.rb

现在这已经不起作用了,因为Homebrew回复如下:

Invalid usage: Installation of PACKAGENAME from a GitHub commit URL is unsupported! `brew extract PACKAGENAME` to a stable tap on GitHub instead. (UsageError)

所以这就是我所做的,我在我的Github帐户上创建了两个(私人(空抽头,我使用brew extract来";提取物";将旧版本转换为那些抽头,因此使用这两个抽头作为"抽头";指针";到旧版本。

但这种提取是由Homebrew在本地完成的,所以我的Github帐户上的存储库仍然是空的,在进行自动更新和检查这两个存储库时,Github无法确定远程HEAD。因此,我如上所述解决了这个问题。

这对我有效:

  • 运行这个:
sudo rm -rf ./linuxbrew/
  • 然后重新安装brew

最新更新