我使用 Lion 重新格式化了我的计算机,它具有以下默认版本的 git:
$ git --version
git version 1.7.7.5 (Apple Git-26)
我决定升级 git,因此我这样做了:
$ brew install git
==> Downloading http://git-core.googlecode.com/files/git-1.7.10.4.tar.gz
######################################################################## 100.0%
==> make prefix=/usr/local/Cellar/git/1.7.10.4 CC=/usr/bin/clang CFLAGS=-Os -w -pipe - march=native -Qunused-arguments LDFLAGS= install
==> make CC=/usr/bin/clang CFLAGS=-Os -w -pipe -march=native -Qunused-arguments LDFLAGS=
==> make clean
==> Downloading http://git-core.googlecode.com/files/git-manpages-1.7.10.4.tar.gz
######################################################################## 100.0%
==> Downloading http://git-core.googlecode.com/files/git-htmldocs-1.7.10.4.tar.gz
######################################################################## 100.0%
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
The OS X keychain credential helper has been installed to:
/usr/local/bin/git-credential-osxkeychain
The 'contrib' directory has been installed to:
/usr/local/share/git-core/contrib
==> Summary
/usr/local/Cellar/git/1.7.10.4: 1173 files, 23M, built in 39 seconds
不幸的是,git没有升级:
$ git --version
git version 1.7.7.5 (Apple Git-26)
我对终端/命令行和所有 Unix 事物都很陌生,所以我不确定下一步该怎么做。我猜“警告”是在告诉我应该做些什么,因为这个升级后的 git 不在默认 git 所在的位置。那么,我需要将这些路径添加到我的 PATH 中吗?如果需要,我该怎么做?如果不需要,我现在该怎么做?
谢谢
答案1
没错。/usr/local/bin
或等效项需要添加到您的PATH
,因为这是brew
安装软件的地方。此外,它需要先默认 Git 所在的目录。 (注意:我会慢慢讲解,只是为了让你稍微轻松一点进入 Unix 世界。)
在修复 PATH 之前,请在终端中执行以下操作:
which git
并查看当前在哪个目录中找到 Git。这就是你必须击败的目录。同时输入以下内容:
echo $SHELL
希望您看到“/bin/bash”,因为我假设您使用的是这个。如果没有,请告诉我们。
最简单的方法就是将其放在/usr/local/bin
PATH 的前面。这通常在 shell 的配置文件中完成,该文件会在您启动终端时运行。对于 bash shell,它是~/.bash_profile
(其中~
是您的主目录的昵称)。如果您还没有,请继续在那里创建一个文本文件,并添加以下行:
export PATH=/usr/local/bin:$PATH
(注意:这里使用合适的基本文本编辑器,例如文本管理工具或者Xcode或您最喜欢的程序员的编辑器,而不是喜欢保存 RTF 文件的 TextEdit。)
':' 分隔 PATH 变量中的目录,并$PATH
扩展为当前的(预赋值)此环境变量的定义。总之,此命令添加/usr/local/bin
到您的 PATH 之前,然后出口将更新后的 PATH 添加到您的环境中,以便从 shell 运行的其他程序可以看到并使用更新后的 PATH。(注意:如果/usr/local/bin
PATH 后面也包含该值,则没问题。如果您决定要保留在前面,则可以删除第二个副本,并将 PATH 设置为完全修改的值。/usr/local/bin
)
保存该文件,退出终端,然后重新启动。创建一个新的终端窗口并输入:
echo $PATH
您现在应该可以/usr/local/bin
在前面看到。运行git --version
并确保您看到的是期望的版本。
完成这些后,会有什么问题呢?在某些情况下,你可能安装了某些/usr/local/bin
不像标准系统应用程序那么稳定的程序,因此你可能不希望一切在该目录中,优先于标准 PATH。如果发生这种情况,常见的解决方案是创建一个仅包含对具体的您希望在搜索中先于系统标准程序出现的程序:
- 创建一个新目录,例如
~/bin
- 将此目录放在 PATH 的前面,而不是
/usr/local/bin
- 在终端中,运行
ln -s /usr/local/bin/git ~/bin/git
以创建符号链接git
在新目录中调用,指向已安装git
的brew
。(如果您熟悉 Windows 世界中的“快捷方式”,符号链接类似于它们。) - 退出并重新启动终端,并测试以确保在运行时选择了您想要的正确程序
git
。
我还应该指出,还有一种更高级的、特定于 Mac 的方法来设置 PATH。它涉及创建/更改您的environment.plist
配置。为此,首先找出满的$PATH
您需要的路径(即不涉及的先前定义):
echo $PATH
之后,运行以下命令:
defaults write ~/.MacOSX/environment PATH ...
其中,...
将替换为您希望作为系统范围默认值的任何路径。将您的目录放在前面(/usr/local/bin
或其他任何位置),不要忘记“:”,并在末尾复制/粘贴 PATH 的 echo 值。然后,为了确保您的 Mac 配置和 shell 配置在同一页面上,请转到 ~/.bash_profile,并在您之前有该export PATH
行的位置执行以下操作:
export PATH=`defaults read ~/.MacOSX/environment.plist PATH`
这就是我在 Mac 上设置 PATH 的方式。
为什么要经历所有这些麻烦?因为与 中定义的 PATH 不同~/.bash_profile
,此默认值可以被 Finder 或 Spotlight 启动的 GUI 应用程序看到。但是,对于您将从命令行运行的 Git 操作,您不需要它。此外,/usr/local/bin/git
如果需要运行 Git,许多使用 Git 的 GUI 应用程序也可以获得 Git 程序的绝对路径 ( )。因此,您可能无需经历这些额外的麻烦。但现在您知道诀窍了,以防以后确实需要它。
快乐地进行 Git 黑客攻击!
答案2
我遇到了完全相同的问题。Owen 给出了最完整的整体答案。
话虽如此,我还是做了更多的挖掘并找到了一种我认为更简单的方法。
environment.plist
构建它使用的路径/private/etc/paths
因此,在终端中只需sudo nano /private/etc/paths
输入您的 root 密码。
进入 nano 后,您可能会看到/usr/bin
first 和/usr/local/bin
last。(注意:所有内容都需要放在单独的行上!)我所做的就是输入/usr/local/bin
first,然后将其从最后一行中删除。
退出终端,然后注销并重新登录。
返回终端并输入git --version
,你就应该成功了。