如何确保远程git用户在接收后挂钩中执行某些命令?

问题描述

希望我不会屠杀我的设置说明。我目前正在呼叫git push到远程计算机上的裸仓库中,以触发如下所示的后接收挂钩:

cd /path/to/working/tree
git pull
gatsby build && gh-pages -d public/

一切正常,直到部署步骤gh-pages通过GitHub上的另一个存储库将更改推送到GitHub Pages为止。通过本地计算机上的remote: Permission denied (publickey)触发后接收钩子时,我得到一个git push,但是直接在远程计算机上运行时,它会成功。

尽管我的gh-pages配置指定了正确的远程用户,但是我猜想从本地计算机上触发钩子时,其他用户正在执行git remote

staging [remote_user]@[remote_ip]:/path/to/bare/repo.git (fetch)
staging [remote_user]@[remote_ip]:/path/to/bare/repo.git (push)

任何帮助将不胜感激!

解决方法

我猜测当从本地计算机上触发钩子时,gh-pages的执行是由其他用户执行的

您可以通过修改后接收挂钩并将其添加到其中来进行检查:

id -a
export GIT_SSH_COMMAND='ssh -Tv'

这样,您将确切看到该挂钩上考虑了什么ID和哪些SSH密钥。