致命:不是git存储库:post-receive hook

时间:2017-09-09 21:08:28

标签: git version-control

我正在努力设置我的git工作流程,以便我可以将我的本地开发机器的提交推送到我的服务器上的裸仓库,并将内容发送到我的远程实时站点,但是我我收到此错误:

致命:不是git存储库:post / receive hook上的'/ git_repos / repo'。

我采取的步骤是:

远程服务器(mysite.com,user =“user”)

  1. git init - 在我的远程服务器上的'/ git_repos / repo'
  2. 在hooks子文件夹下添加一个'post-receive'文件,其中包含:#!/ bin / sh git --work-tree = / public --git-dir = / git_repos / repo checkout -f

  3. 为用户分配执行权限以进行post-receive - chmod + x post-receive

  4. 本地服务器

    1. git remote add livesite user@mysite.com:git_repos / repo

    2. 提交更改和.. git push livesite

    3. shell脚本执行但每次都失败并出现相同的错误。作为参考,远程“git_repos”和“public”文件夹位于“user”用户的主目录中。

      有谁知道导致此失败的原因是什么?

      请注意,就我而言,此问题与我之前的查询是分开的,因为我根本无法将回购推送到我的远程服务器,但现在已经解决了。也许值得一提的是我尝试了带有和不带前导斜杠的post-receive hook(即 git-dir = git_repos / repo ),错误信息是相同的。

1 个答案:

答案 0 :(得分:0)

这主要是因为无法找到路径/ git_repos / repo,或者它不是git repo。

在远程服务器的post-receive挂钩中,您应为git_repos/repopublic指定--git-dir--work-tree完整路径选项。

假设git_repos/repo的完整路径为/home/user/git_repos/repopublic的完整路径为/home/user/public。然后你应该将收到后挂钩更改为:

#!/bin/sh 
git --work-tree=/home/user/public --git-dir=/home/user/git_repos/repo checkout -f