OS X:便携式Git(又称安装多个Git版本)

时间:2013-04-03 12:28:01

标签: macos git osx-lion

我目前正在尝试在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包中进行更改以使其可移植(也就是在每个位置运行)?

2 个答案:

答案 0 :(得分: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的第一个目录中获取他们的帮助程序。

[edit]您还需要设置环境变量GIT_EXEC_PATH。使用

git --exec-path

了解目前的情况,然后使用新的:

  

git --exec-path =< ... git-1.7.11.1 /...& gt;

或通过定义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 Man Page

答案 1 :(得分: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':