Kub*_*r82 15 git macos homebrew
最近,当我运行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>...]'
Run Code Online (Sandbox Code Playgroud)
备注:只是澄清一下,是的,这是同一条消息打印了两次。
(但也许每条消息都与不同的存储库相关)
我尝试运行一些自动修复brew doctor
,brew cleanup
但上面的输出仍然显示。
这是什么意思?也许安装一些软件包后有些东西被改变了?
您对如何解决这个问题有什么建议吗?
Mik*_*rov 39
由于网络问题,我在 MacBook Pro M1 上遇到了类似的错误,这对我有用:
rm -rf /opt/homebrew
或者它可能在另一条路上
rm -rf /etc/homebrew
检查两个目录中的目录homebrew
并将其删除。
小智 10
这对我有用:
/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)"
Run Code Online (Sandbox Code Playgroud)
TL;DR:如果您只想要解决方案/解决方法,请忽略“我如何发现问题”部分和末尾的附录。
运行下面的brew命令后
brew update -vd --preinstall >brewlog.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
并检查brewlog.txt
文件,我意识到当 Homebrew 尝试访问我在 Github.com 帐户上创建的两个水龙头以“提取”某些软件包的旧版本以安装这些旧版本时,会出现两个错误,如下所示Homebrew 特别建议(见最后附注)。
特别是,在自动更新期间,Homebrew 尝试访问这两个水龙头,即相应的两个存储库,并尝试运行以下两个命令。
git remote set-head origin --auto
git symbolic-ref refs/remotes/origin/HEAD
Run Code Online (Sandbox Code Playgroud)
但由于我在 Github 帐户上创建的那些 Tap 被存储为空存储库,因此没有提交,也没有 HEAD,因此 git 会回复Cannot determine remote HEAD
其余的错误消息。
为了解决这个问题,或者至少是为了解决这个问题,我只是向存储库添加了一些内容。特别是,该brewlog.txt
文件显示上述 git 命令是从以下路径内部执行的。
/usr/local/Homebrew/Library/Taps/GITHUBACCOUNTNAME/PACKAGENAME
Run Code Online (Sandbox Code Playgroud)
因此,我导航到这两个文件夹,我注意到本地实际上有一个名为 的文件夹,其中Formula
包含一个名为PACKAGENAME.rb
. 我想,这些内容是由 Homebrew 在安装旧版本时存储的。
因此,为了“填充”我的两个 Github Tap,我所做的就是通过从两个文件夹中的每一个运行以下命令,将这些内容添加到远程 Tap。
git add Formula
git commit -m "First commit"
git push
Run Code Online (Sandbox Code Playgroud)
现在这两个水龙头中有一个 HEAD,Homebrew 不再抱怨了。
过去,只需在 Github 上找到“正确的提交”(查看此处了解详细信息)并编写类似的内容即可安装旧版本的 Homebrew 软件包。
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8cf29889111b44fd797c01db3cf406b0b14e858c/Formula/PACKAGENAME.rb
Run Code Online (Sandbox Code Playgroud)
现在这不再起作用了,因为 Homebrew 回复了这样的内容:
Invalid usage: Installation of PACKAGENAME from a GitHub commit URL is unsupported! `brew extract PACKAGENAME` to a stable tap on GitHub instead. (UsageError)
Run Code Online (Sandbox Code Playgroud)
这就是我所做的,我在我的 Github 帐户上创建了两个(私人)空水龙头,然后使用brew extract
旧版本“提取”到这些水龙头,因此使用这两个水龙头作为旧版本的“指针”。
但是这个提取是由 Homebrew 在本地完成的,所以我的 Github 帐户上的存储库仍然是空的,并且在进行自动更新和检查这两个存储库时,Github 无法确定远程 HEAD。因此我按照上面的解释解决了这个问题。
归档时间: |
|
查看次数: |
14048 次 |
最近记录: |