0

我使用了以下代码:

    echo exec("git add . ");  //this is working  
echo exec("git commit -am 'first commit' "); //also working  
echo exec("git push origin master");  //NOT WORKING, also not showing any error . 

我将文件夹权限从用户更改为 www-data 。所以,一些 git 命令正在工作,但是

GIT PUSH ORIGIN MASTER

不能从 php exec 工作。解决办法是什么 ?另外,请告诉我为什么 PUSH in exec 没有显示任何错误或消息,我怎么能看到这些消息。另外,如果可能的话,请为我提供任何好的链接,以便更高级地使用 php exec 中的 git 命令。

更新:我也试过这个:我通过创建文件 .git/hooks/post-commit 添加了提交后挂钩

我添加了这段代码:

git push origin master

但是我提交后没有收到任何消息或错误,它只是提交但没有做任何推送。

谢谢 !

4

2 回答 2

2

我假设 push 命令将尝试推送到远程存储库(即不是系统上的另一个文件夹,而是 SSH/HTTPS 后面的远程服务器)。

在这种情况下,您很可能缺少 HTTPS 客户端证书 HTTPS 或 SSH 密钥。您的网络服务器(以及 PHP)很可能以不同的用户身份运行,并且无权访问私钥。除此之外,如果私钥需要密码,它将不起作用,因为 exec 命令不是交互式会话。

无论如何,我强烈建议您使用某种绑定而不是调用二进制文件。任何直接调用都将启动一个新进程,这比调用库效率低得多。

于 2012-06-30T21:03:54.737 回答
0

你检查过你在哪个分支吗?'git status' 会告诉你。

我还建议在分支上工作,而不是直接在 master 上工作。

git 分支 dev_test

git checkout dev_test

混帐添加。

git commit -a -m "第一条评论"

git push origin dev_test

git结账大师

git 合并 dev_test

git push 起源大师

于 2012-06-28T09:11:21.250 回答