“git pull”坏了

时间:2009-09-23 11:24:32

标签: git macos osx-snow-leopard

我最近将我的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

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

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

令我感到惊讶的是,该目录不存在,也从未存在过。谷歌没有帮助。希望你能::)

7 个答案:

答案 0 :(得分: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);

现在,当您说--exec-path=/some/where时设置了_argv_exec_path_,因此可以打折。您已声明未设置环境变量。 GIT_EXEC_PATH在编译期间定义libexec/git-core。向后看,它似乎只被定义为RUNTIME_PREFIX。因此,我们需要查看Makefile代替的内容。

我不确定是否为您定义$(HOME)。但是在Makefile中输入时,我注意到system_path()默认为~/.bashrc。我怀疑这可能是你问题的原因。

简单的答案是将其放在export GIT_EXEC_PATH=/opt/local/libexec/git-core

port -d upgrade -f git-core

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

答案 1 :(得分:2)

有趣。试试echo $GIT_EXEC_PATHwhich git。它不太可能与雪兽有关......

答案 2 :(得分:2)

在我的系统上,libexec/git-core位于/usr/local而不是/opt/local/usr/local/libexec目录对我只有root访问权限,这解决了问题:

sudo chmod a+rx /usr/local/libexec

答案 3 :(得分:1)

您是否尝试过ports Migration wiki page上的步骤?这很痛苦,但在执行--force卸载和重新安装过程后,我的任何端口都没有任何问题,其中包括git(几乎每个变种都已打开)。

答案 4 :(得分:0)

Git编译如此轻松,没有任何理由去打扰任何macports的疯狂。摆脱/ opt中的任何内容并尝试以正常方式构建它。赔率很高它会起作用。

答案 5 :(得分:0)

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

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

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

他们曾经在一个页面教程中有一个非常好的全部,现在似乎已经分裂了。多么可惜。

答案 6 :(得分:0)

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

sudo su
export GIT_EXEC_PATH=/Applications/Xcode.app/Contents/Developer/usr/libexec/git-core
brew update # or whatever you want from here