最近,当我用任何包运行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 doctor
和brew 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