尝试在 Mac OS X 上更新 Git 并卸载旧 Git 失败

尝试在 Mac OS X 上更新 Git 并卸载旧 Git 失败

我正在尝试在我的 Mac OS X 10.8.5 (Mountain Lion) 上更新 git。

我从下载了这个新版本此链接,双击.dmg然后拖入uninstall.sh我的终端(按照说明那里)以卸载旧版本,我得到:

Git doesn't appear to be installed via this installer.  Aborting

请注意,它git当前已安装在我的计算机上。

$ git --version
git version 1.7.9.6 (Apple Git-31.1)
$ which git
/usr/bin/git 

为何无法卸载?如何更新git

答案1

在 Mac 上,最简单的方法是使用自制

  1. 安装 brew
  2. 按照说明操作(brew doctor将告诉您$PATH使用/usr/local/bin:$PATH
  3. brew install git

无需担心手动更新,只需brew update && brew upgrade定期运行即可

为什么无法安装现有的:

  • Apple 有一个 Xcode 使用的默认 git 安装(假设您安装了 Xcode 或至少安装了命令行实用程序)

答案2

简短的回答。

无需卸载git您在 Mac OS X 中看到的 Xcode。只需通过编辑添加以下内容/usr/local/git/bin即可:$PATH~/.bash_profileexport PATH

export PATH="/usr/local/git/bin:$PATH"

然后关闭并保存该文件并将其加载到您的终端会话中,如下所示:

source ~/.bash_profile

并且,与已git安装的 Xcode 相比,您可以优先访问新安装的Xcode。git

较长的答案。

解释错误信息。

uninstall.sh可以通过查看随附的 Bash 脚本的内容来理解该问题Mac OS X 的官方 Git 安装程序包看看它到底做了什么。下面是顶部附近的代码片段,它会引发您看到的错误:

#!/bin/bash
if [ ! -r "/usr/local/git" ]; then
  echo "Git doesn't appear to be installed via this installer.  Aborting"
  exit 1
fi

注意这一行if [ ! -r "/usr/local/git" ]; then,Bash 脚本正在检查该目录路径是否存在:

/usr/local/git/

但是当您运行which git路径目录路径时,您得到的是:

/usr/bin/ 

这表明官方安装程序将git其项目安装在 中,/usr/local/git/而不是 的核心 Mac OS X 目录中/usr/bin/

那么你已经拥有的另一个版本是什么git?让我们检查一下输出git --version以了解更多详细信息:

$ git --version
git version 1.7.9.6 (Apple Git-31.1)

看到了吗(Apple Git-31.1)?这表明它是由 Apple 安装的。由于git它不是核心 Mac OS X 设置的一部分,因此安装它的唯一方法是通过 Xcode 和相关的命令行二进制文件。

简而言之,您不能(也不应该)尝试卸载 的 Xcode 版本git。相反,您需要让终端优先git使用 中安装的二进制文件,而/usr/local/git/bin/不是 中的核心 Mac OS X 二进制文件/usr/bin/。您可以通过像这样修改$PATH中的设置来实现这一点~/.bash_profile

修复该问题。

首先,打开~/.bash_profile一个文本编辑器。我更喜欢直接在命令行中执行此操作,nano如下所示:

nano ~/.bash_profile

现在,如果export $PATH其中不存在,只需在文件中~/.bash_profile添加如下一行:$PATH

export PATH="/usr/local/git/bin:$PATH"

如果export $PATH确实存在,则修改该值以使其位于系统/usr/local/git/bin主程序之前。请注意分隔符。$PATH:

现在关闭并保存该文件,然后将其加载到您的终端会话中,如下所示:

source ~/.bash_profile

现在如果你输入:

which git

输出应为:

/usr/local/git/bin/git

这意味着您的终端$PATH现在将进行检查,/usr/local/git/bin/然后再继续检查二进制文件的默认$PATH值中的其他目录git

因此,无需卸载 Xcode 版本,git您现在可以下载并安装官方(和更新的)git二进制文件并使用它,而无需处理 Homebrew 或其他任何东西。例如,在我的系统上,这是当前的输出git --version如下:

git version 2.5.3

看不到(Apple Git-31.1)。只是一个纯粹的git版本号,由于进行了此调整,它是最新的并且可以立即使用$PATH

答案3

仅安装git是不够的。还请记住,git只有当您进入功能齐全的 git repo 文件夹时,该功能才会起作用cd。这意味着您应该看到一个./.git文件夹(提示:用于ls -la查看隐藏文件夹)并git status应返回类似于以下示例的内容:

[some_repo]$ git status
On branch master
Your branch is up-to-date with 'origin/prod'.
nothing to commit, working directory clean

但如果该文件夹不是有效的 git repo,你会看到类似这样的内容:

[~]$ git status
fatal: Not a git repository (or any of the parent directories): .git

相关内容