得到“致命的:不是一个混帐存储库:'。'”当使用后更新钩执行'git拉'在另一个回购
如果我在这里误用术语,我很抱歉(请纠正我),但我会尽我所能。
我试图在Web服务器上build立一个裸Git回购(hub)和一个开发网站工作副本(prime)。 这篇文章之后,我试图devise它。 我希望当推送到中心仓库时更新开发工作副本。 我的印象是,正确的钩子是post-update
,我创build了这样的:
#!/bin/sh whoami cd /path/to/working-copy/ RET=`git pull` echo $RET
更新
当我从本地回购更改到裸集线器时,我从更新后脚本得到以下输出:
remote: sites remote: fatal: Not a git repository: '.'
但是,如果我作为用户'网站'SSH进入服务器,并手动执行这个脚本,它是伟大的任何想法,可能会出现这个钩子或脚本错了吗?
这是最终工作的脚本。 我认为我最初遗漏的一点阻止它远程工作的是未unset GIT_DIR
#!/bin/sh cd /path/to/working-copy/ || exit unset GIT_DIR git pull repo branch exec git-update-server-info
改为:
#!/bin/sh cd /path/to/working-copy/ env -i git pull
尽pipe未设置的GIT_DIR正常工作。
当您在其他地方错误地设置GIT_DIR时会出现问题。
你可以添加,而不是:GIT_DIR = .git /它会工作
在我的情况下,我已经指定了一个工作树,这就打破了一些命令,如pull
(或更确切地说, fetch
)。
如果它在你的gitconfiguration中,取消设置工作树是通过:
git config --unset core.worktree
(还有其他方法来设置工作树)
重要的是要注意,
除非你自己通过使用自定义工作树在你周围挖这个洞,否则这个问题几乎没有变化。
嘲笑:
这意味着在某些情况下,git内部使用相对于worktree + .git/
path。 根据我的经验,除了git最基本的部分之外,工作树并没有得到很好的支持。 我没有彻底尝试,Git可能会performance如果我设置任何git目录configurationvariables是正确的,我没有玩过。
您可能有权限问题。 我不知道你如何设置你的裸git回购,但如果它在git
用户下运行,请确保git
用户被允许在你的项目目录中执行git pull
。
可以select这个来找出挂钩运行时你是什么用户:
echo `whoami`