【问题标题】:GitHub for Mac error: git: 'credential-osxkeychain' is not a git commandGitHub for Mac 错误:git:'credential-osxkeychain' 不是 git 命令
【发布时间】:2012-11-19 15:01:53
【问题描述】:

使用 GitHub for Mac 应用程序(版本 87)时,我收到以下错误:

git: 'credential-osxkeychain' 不是 git 命令。请参阅“git --help”。

错误:请求的 URL 返回错误:访问 https://github.com/[PROJECT URL]/info/refs 时出现 403

致命:HTTP 请求失败 (256)

git 命令行工具(1.8.0 版)安装在/usr/local/git/bin,git-credential-osxkeychain 正确安装在/usr/local/git/bin

我该如何解决这个错误?

【问题讨论】:

  • 我没有输入任何内容,我点击了同步按钮。我有一个解决方案,但由于我是新用户,stackoverflow 不允许我在 8 小时后发布它。
  • sudo ln -s /usr/local/git/bin/git-credential-osxkeychain /usr/local/bin/git-credential-osxkeychain 应该修复它。 @William 有类似的答案,尽管他在 /usr/bin 而不是 /usr/local/bin 中创建了软链接

标签: github-for-mac


【解决方案1】:

此问题的根源在于 GitHub for Mac 对其可执行文件使用的目录路径与命令行工具不同。

GitHub for Mac: /Applications/GitHub.app/Contents/Resources/git/bin

命令行工具: /usr/local/git/bin/

因此,当 GitHub for Mac 尝试同步分支时,它会显示错误,因为它找不到 git-credential-osxkeychain 可执行文件。

解决问题:

  1. 启动终端
  2. 为 git-credential-osxkeychain 创建一个符号链接,从 Command Line Tools DirGitHub for Mac Dir

ln -s <git-command-line-tools dir path>/git-credential-osxkeychain <github for mac path>/git-credential-osxkeychain

这是我在我的系统上使用的命令:

ln -s /usr/local/git/bin/git-credential-osxkeychain /Applications/GitHub.app/Contents/Resources/git/bin/git-credential-osxkeychain

【讨论】:

  • 我在 Atlassian 的 SourceTree 应用程序中遇到了同样的问题 - 根本问题是相同的。我能够通过选择SourceTree > Preferences > GitUse System GitSourceTree 的嵌入式git 切换到全局安装的git 来解决这个问题——这恰好是最近的一次。另请注意,Mac 版 Github 现在允许您采取相反的方向:您可以选择通过 Preferences 将其嵌入式 git 版本作为全局安装版本。
  • SourceTree 的解决方案与此相同,只是链接的目标变为/Applications/SourceTree.app/Contents/Resources/git_local/bin Mac git 客户端的当前版本包括git-credential-osxkeychain,因此+1 指向Use System Git 首选项.这可能是 SourceTree 用户“应该”做的方式。否则,如果/当 git 更新而 SourceTree 没有更新时,git-credential-osxkeychain 将与 SourceTree 将使用的其余 git 可执行文件的版本不匹配。
  • SmartGit for mac 也会发生这种情况。 smartgitln -s /usr/local/git/bin/git-credential-osxkeychain /Applications/SmartGit.app/Contents/Resources/git/bin/git-credential-osxkeychain的解决方法是一样的
【解决方案2】:

这总是发生在源树应用程序和您更改设置以使用系统 git 而不是带有源树的嵌入式 git 的解决方案中,因为源树使用的是旧版本 或者您可以使用 git 可执行文件的路径更新设置,您应该在 /usr/bin/git 中找到它,或者您可以打印哪个 git 并指向您的源树应用程序来使用它

【讨论】:

    【解决方案3】:

    设置

    /usr/local/git/bin/git-credential-osxkeychain

    在你的路径中也可以,或者你的路径可能在哪里。

    我不确定哪种解决方案更可取。

    【讨论】:

      【解决方案4】:

      在与我的一位同事一起解决此问题后,我们只需将 SourceTree 更新到最新版本即可解决。

      对于未来的查看者,在进入符号链接路径之前,请确保您为源树启用了自动更新(首选项->更新选项卡),然后检查更新(在 Mac 上的源树菜单中)

      【讨论】:

        【解决方案5】:

        我不得不做sudo ln -s /usr/local/git/bin/git-credential-osxkeychain /usr/bin/git-credential-osxkeychain,因为我升级了 git,然后将 /usr/local/git/bin/git 复制到 /usr/bin/git

        【讨论】:

          【解决方案6】:

          http://backlogtool.com/git-guide/cn/reference/trouble-shooting.html

          每次执行推/拉时,HTTPS 都需要密码 如果你是windows,那就是第一次

          但在 Mac 中,您可以使用与钥匙串连接的身份验证助手。使用 Homebrew 的用户在安装 Git 时会自动安装身份验证助手。另外,需要手动安装。

          如果要验证是否有安装认证助手,可以使用以下命令进行确认。

          git credential-osxkeychain

          如果没有安装认证助手,会显示如下内容。

          git: 'credential-osxkeychain' is not a git command. See 'git --help'.

          此时,您可以将认证助手下载到正确的路径。

          1. curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
          2. chmod u+x git-credential-osxkeychain
          3. mv git-credential-osxkeychain /usr/local/bin

          安装后,设置开启认证助手。

          1. git config --global credential.helper osxkeychain

          【讨论】:

          • 就我而言,它是在 Mac 上安装的,并通过 git credential-osxkeychain 确认。但我必须运行第四个命令来重新配置它git config --global credential.helper osxkeychain
          【解决方案7】:

          试试看:git config --global credential.helper git

          【讨论】:

            【解决方案8】:

            git: 'credential-osxkeychain' is not a git command. See 'git --help'. 这个错误信息在我升级 git 后消失了,

            brew upgrade git
            
            ==> Upgrading 1 outdated package:
            git 2.11.1 -> 2.21.0
            

            【讨论】:

              【解决方案9】:



              当我尝试运行此命令时,没有错误

              brew untap homebrew/homebrew-dupes
              

              【讨论】:

              • 谢谢,我遇到了同样的问题,“homebrew/homebrew-boneyard 不存在!”并运行 brew untap... 工作
              • Git 和 Homebrew 有什么关系?
              【解决方案10】:

              如果你在使用brew update时遇到这个问题,试试

              brew update --debug --verbose
              

              您可以查看详细日志,找到真正的原因。

              【讨论】:

                【解决方案11】:

                我在 Fork.app 上遇到了同样的问题,应用程序的 git 实例无法使用钥匙串,这有帮助(或更改为系统或自制 git 实例,它在应用程序的首选项中列出):

                cd /Volumes/Macintosh HD/Applications/Fork.app/Contents/Resources/git-instance/bin
                
                ./git config --global credential.helper osxkeychain
                

                【讨论】:

                  【解决方案12】:

                  @plough's answer 一样,我在运行brew update 时遇到了同样的问题,因为我使用了使用HTTPS 访问远程存储库的私人水龙头。

                  根本原因是git找不到配置的凭证助手,因为默认情况下brew会从环境中清除PATH

                  有两种解决方法。

                  1. HOMEBREW_NO_ENV_FILTERING=1 brew update 单独离开PATH,因此将使用您当前的 git 安装并找到凭证助手。每次键入都有些笨拙,因此如果您使用此解决方案,请将其保存为别名或 1-liner 脚本。

                    更新:您也可以使用 HOMEBREW_FORCE_BREWED_GIT=1 brew update 来使用 brew 安装的 git 而不是系统的。此版本无需依赖设置的路径即可找到凭据助手。

                  2. 我首选的解决方法是将违规水龙头的远程 URL 更改为使用 SSH 样式的 URL(并确保您配置了有效的 SSH 密钥)。您不必记住 brew update 的其他咒语,它是永久的。

                    • 在终端中,cd /usr/local/Homebrew/Library/Taps/ORG/homebrew-PRIVATE_TAP_NAME
                    • git config remote.origin.url 将显示值 https://github.com/ORG/homebrew-PRIVATE_TAP_NAME
                    • 将其更改为等效的 SSH 样式 URL:git config remote.origin.url git@github.com:ORG/homebrew-PRIVATE_TAP_NAME.git

                  【讨论】:

                    【解决方案13】:

                    我为此苦苦挣扎了一段时间,但发现 this 为我解决了这个问题。

                    第一步检查你有 git credential-osxkeychain

                    $ git credential-osxkeychain
                    # Test for the cred helper
                    > Usage: git credential-osxkeychain <get|store|erase>
                    

                    如果不安装 Xcode 命令行工具 (xcode-select --install) 或 brew install git

                    第 2 步 使用 global credential.helper 配置告诉 Git 使用 osxkeychain helper

                    $ git config --global credential.helper osxkeychain
                    #Set git to use the osxkeychain credential helper
                    

                    【讨论】:

                      猜你喜欢
                      • 2017-01-23
                      • 2012-10-14
                      • 2021-11-01
                      • 1970-01-01
                      • 2022-07-06
                      • 1970-01-01
                      • 2013-06-10
                      • 2023-03-20
                      • 2018-10-29
                      相关资源
                      最近更新 更多