AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 107608
Accepted
zanona
zanona
Asked: 2010-01-30 08:44:44 +0800 CST2010-01-30 08:44:44 +0800 CST 2010-01-30 08:44:44 +0800 CST

Git - 带有 git pull 的 post-receive 钩子“找不到有效的 git 目录”

  • 772

这很奇怪,但是在设置 git 存储库并使用以下命令创建接收后挂钩时:

echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"

钩子确实运行了,但它永远无法正确运行 git pull :

6bfa32c..71c3d2a  master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--

所以我现在问自己,如何让钩子用 post-receive 更新克隆?

在这种情况下,运行进程的用户是相同的,并且它的所有内容都在用户文件夹中,所以我真的不明白......因为如果我手动进入

cd ~/websites/testing
git pull

它工作没有任何问题......

对此的任何帮助将不胜感激

非常感谢

unix git hook
  • 6 6 个回答
  • 14360 Views

6 个回答

  • Voted
  1. Best Answer
    Tobu
    2010-01-30T13:35:54+08:002010-01-30T13:35:54+08:00

    当钩子运行时,GIT_DIR并且(如果工作树被明确定义)GIT_WORK_TREE被设置。这意味着您的 pull 不会与您更改到的目录中的第二个存储库一起运行。

    试试git --git-dir ~/websites/testing/.git --work-tree ~/websites/testing pull;或取消设置 git 的 repo-local 环境:

    unset $(git rev-parse --local-env-vars)
    

    有关这些环境变量的更多信息man 1 git。

    • 26
  2. 2010-03-17T06:25:43+08:002010-03-17T06:25:43+08:00

    我经历过的一件事是使用post-update钩子“--git-dir”效果很好,但 git 仍然抱怨缺少工作树(尽管使用了“--work-tree”)

    简而言之,这不起作用:

    git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull

    而这有效:

    cd /path/to/websites/testing
    git --git-dir /path/to/websites/testing/.git pull

    • 6
  3. tommasop
    2010-04-21T05:37:06+08:002010-04-21T05:37:06+08:00

    这不行吗?

    cd /home/smb/websites/testing
    env -i git pull
    

    已编辑

    更好的是

    cd /home/smb/websites/testing
    unset GIT_DIR
    git pull
    
    • 1
  4. silk
    2010-01-30T11:20:27+08:002010-01-30T11:20:27+08:00

    您是否尝试过使用完整路径而不是〜?

    cd /home/smb/websites/testing
    git pull
    
    • 0
  5. Darren Chamberlain
    2010-01-30T13:02:00+08:002010-01-30T13:02:00+08:00

    该脚本可能是用 调用的/bin/sh,它不理解~。尝试使用完整路径来~代替。

    • 0
  6. David Burton
    2010-02-08T00:18:24+08:002010-02-08T00:18:24+08:00

    第一个推荐的答案是正确的——当一个钩子运行时,设置了 GIT_DIR 等。但是,如果您希望能够在另一个存储库中使用该脚本,那么该方法是有缺陷的,因为它硬编码重置 GIT_DIR。正如他们暗示的那样,另一种方法是使用 env 删除变量,如下所示: .

    • 0

相关问题

  • Windows 有符号链接吗?

  • 控制 UNIX 目录内容用户组所有权

  • 在命令行上从 csv 文件中过滤带有空格字符的字段

  • 如何将 VAR 从子 shell 导出到父 shell?

  • 查找文件大小(以 MB 为单位)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve