2

我目前正在尝试在 OS X 上安装多个 Git 版本以进行测试。从git-scm.com(安装到/usr/local/git)下载 OS X 安装程序包后,我将其移动到不同的位置,例如~/git-1.7.11.1~/git-1.8.1. 不幸的是,Git 不喜欢这个动作:

$ ~/git-1.7.11.1/bin/git fetch
fatal: Unable to find remote helper for 'https'

甚至更糟:

$ ~/git-1.7.11.1/bin/git pull
git: 'pull' is not a git command. See 'git --help'.

Did you mean this?
        shell

当我设置路径时,它也不起作用:

$ export PATH=~/git-1.7.11.1/bin:$PATH
$ which git
/Users/xxx/git-1.7.11.1/bin/git
$ git pull
git: 'pull' is not a git command. See 'git --help'.

Did you mean this?
        shell

我还需要在 Git 包中更改什么以使其可移植(也就是在每个位置运行)吗?

4

2 回答 2

3

git-scm 安装程序似乎将所有内容安装在 /usr/local/git 中(通过查看 git-scm 下载中的 uninstall.sh 文件推断)。因此,重命名 git 目录应该没有问题。您需要做的是增加您的路径,如下所示:

PATH=$PATH:/usr/local/git-1.7.11.1/bin

这样git就可以找到它的所有帮助程序。

请注意,如果您尝试从同一个 shell 调用多个 git 版本,这种方法将不起作用;所有版本都将从 PATH 的第一个目录中获取其帮助程序。

[编辑] 您还需要设置环境变量 GIT_EXEC_PATH。采用

git --exec-path

了解它目前是什么,然后使用一个新的:

git --exec-path=<...git-1.7.11.1/...>

或通过定义 GIT_EXEC_PATH。

此外,构建路径似乎内置在git可执行文件中,这可能表明git它的支持文件位于默认位置。

ebg@ebg(147)$ strings git | grep usr
/usr/local/git
/usr/local/bin:/usr/bin:/bin

ebg@ebg(148)$ strings /usr/bin/git | grep usr
/Applications/Xcode.app/Contents/Developer/usr
/usr/local/bin:/usr/bin:/bin

所以,使用 GIT_EXEC_PATH。有关更多信息,请参阅GIT 手册页

于 2013-04-03T14:25:32.873 回答
2

我需要设置GIT_EXEC_PATH

$ ~/git-1.7.11.1/bin/git pull
git: 'pull' is not a git command. See 'git --help'.

Did you mean this?
        shell
$ export GIT_EXEC_PATH=~/git-1.7.11.1/libexec/git-core/
$ ~/git-1.7.11.1/bin/git pull
Password for 'https://xxx': 
于 2013-04-04T11:50:20.497 回答