答案1
在 Mac 上,最简单的方法是使用自制。
- 安装 brew
- 按照说明操作(
brew doctor
将告诉您$PATH
使用/usr/local/bin:$PATH
brew install git
无需担心手动更新,只需brew update && brew upgrade
定期运行即可
为什么无法安装现有的:
- Apple 有一个 Xcode 使用的默认 git 安装(假设您安装了 Xcode 或至少安装了命令行实用程序)
答案2
简短的回答。
无需卸载git
您在 Mac OS X 中看到的 Xcode。只需通过编辑添加以下内容/usr/local/git/bin
即可:$PATH
~/.bash_profile
export 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