14

我最近将我的 MacBook Pro 升级到 Snow Leopard 并且“git pull”返回:

rakudo $ git pull
git: 'pull' is not a git-command. See 'git --help'

Did you mean this?
        shell
rakudo $ git-pull
-bash: git-pull: command not found

我试过通过macports重新安装,但无济于事。然后我看到了这个

rakudo $ git --exec-path
/Users/ovid/libexec/git-core

这让我感到惊讶,因为该目录不存在,也从未存在过。谷歌在这里没有帮助。希望你能:)

4

7 回答 7

24

查看git的源码,在git.c中有一条注释:

/*
 * We use PATH to find git commands, but we prepend some higher
 * precedence paths: the "--exec-path" option, the GIT_EXEC_PATH
 * environment, and the $(gitexecdir) from the Makefile at build
 * time.
 */

如果你调用,git --exec-path你最终会调用exec_cmd.c。看起来像这样:const char *git_exec_path(void)

const char *env;

if (argv_exec_path)
    return argv_exec_path;

env = getenv(EXEC_PATH_ENVIRONMENT);
if (env && *env) {
    return env;
}

return system_path(GIT_EXEC_PATH);

现在,_argv_exec_path_ 设置的时候你这么说--exec-path=/some/where可以打折了。您已声明未设置环境变量。 GIT_EXEC_PATH在编译期间在Makefile中定义。往回走,它似乎被定义为 just libexec/git-core。所以,我们需要看看system_path()做了什么。

我不确定是否RUNTIME_PREFIX为您定义。但是,在 Makefile 中查找时,我确实注意到前缀默认为$(HOME). 我怀疑这可能是您的问题的原因。

简单的答案是将其放入~/.bashrc

export GIT_EXEC_PATH=/opt/local/libexec/git-core

如果您想了解更多关于正在发生的事情,您可能必须使用port -d upgrade -f git-core(或类似的)重新编译 git 并仔细查看构建日志以查看设置前缀的位置。顺便说一句,port cat git-core显示大量使用${prefix}所以它应该(希望)是显而易见的。

于 2009-09-23T13:32:37.333 回答
2

有趣的。试试echo $GIT_EXEC_PATHwhich git。不太可能和雪兽有关……</p>

于 2009-09-23T11:28:57.380 回答
2

在我的系统上,libexec/git-core是 in/usr/local和 not /opt/local。该/usr/local/libexec目录对我来说只有 root 可访问权限,这解决了问题:

sudo chmod a+rx /usr/local/libexec
于 2010-04-26T22:34:50.073 回答
1

您是否尝试过端口迁移 wiki 页面上的步骤?这很痛苦,但是在完成--force卸载和重新安装过程之后,我的任何端口都没有任何问题,其中包括git(几乎所有变体都打开了)。

于 2009-09-23T12:05:14.167 回答
0

Git 编译如此容易,实际上没有任何理由为 macports 的任何疯狂而烦恼。摆脱 /opt 中的所有内容并尝试以正常方式构建它。很有可能它会起作用。

于 2009-10-13T04:54:51.067 回答
0

另一种选择是从 GitHub 上的有用页面下载:

http://help.github.com/mac-git-installation/

他们有一个独立的安装程序(虽然第二个选项是 MacPorts...)

他们曾经有一个非常好的一页教程,现在似乎已经分裂了。真可惜。

于 2009-10-13T05:00:24.907 回答
0

对我来说,这是一个仅与我的 brew 安装特别相关的问题。在 OSX 10.9.2 上,我在根目录下安装了 brew,所以这对我有用:

sudo su
export GIT_EXEC_PATH=/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core
brew update # or whatever you want from here
于 2014-05-30T23:47:48.160 回答