Answers:
无需卸载git
在Mac OS X中看到的Xcode 。只需通过编辑添加/usr/local/git/bin
到您的Xcode中即可,如下所示:$PATH
~/.bash_profile
export PATH
export PATH="/usr/local/git/bin:$PATH"
然后关闭并保存该文件,并将其加载到您的终端会话中,例如通过键入以下命令:
source ~/.bash_profile
与您已经拥有git
的Xcode相比,您将可以优先访问新安装的Xcode git
。
通过查看Mac OS X官方Git安装程序包uninstall.sh
随附的Bash脚本的内容,可以确切地了解该问题。这是顶部附近的代码段,引发您所看到的错误:
#!/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目录中,而不是安装在的核心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
。相反,您要使Terminal更喜欢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
调整,仅提供一个最新的纯净版本号,即可使用。
有git
安装是不够的。还请记住,git
只有当您cd
进入功能齐全的git repo文件夹时,该选项才起作用。这意味着您应该看到一个./.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
$PATH
需要更改的要点2 。无需调整Homebrew,只需调整其$PATH
值即可解决此问题。请参阅我的答案以获取更多详细信息。