【问题标题】:Homebrew shows git-related errorsHomebrew 显示与 git 相关的错误
【发布时间】:2021-06-28 15:35:35
【问题描述】:

最近,当我使用任何软件包运行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 进行一些自动修复,但上述输出仍然显示。

这是什么意思?安装一些软件包后可能发生了一些变化?

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

【问题讨论】:

    标签: git macos homebrew


    【解决方案1】:

    TL;DR:如果您只是想要解决方案/解决方法,请忽略“我如何发现问题”部分和末尾的附录。

    我是如何发现问题的

    运行下面的 brew 命令后

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

    并检查 brewlog.txt 文件,我意识到这两个错误出现在 Homebrew 尝试访问我在 Github.com 帐户上创建的两个水龙头以“提取”某些软件包的旧版本以安装这些旧版本,因为 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
    

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

    关于安装旧版本的补充说明

    过去,只需在 Github 上找到“正确的提交”(查看 here 了解详细信息)并编写类似的内容,就可以安装旧版本的 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 无法确定远程头。因此,我按照上面的说明解决了这个问题。

    【讨论】:

      【解决方案2】:

      由于网络问题,我在 MacBook Pro M1 上遇到了类似的错误,这对我有用:

      rm -rf /opt/homebrew

      或者它可能在另一个路径中

      rm -rf /etc/homebrew

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

      【讨论】:

        【解决方案3】:

        这对我有用:

        /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)"
        

        【讨论】:

        • 帮我解决了问题
        猜你喜欢
        • 1970-01-01
        • 2018-09-03
        • 2021-01-19
        • 1970-01-01
        • 1970-01-01
        • 2015-04-02
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多