我正在尝试将本地机器上的更改推送到在线服务器。我根据该页面上的步骤进行操作。
在我的本地机器上,当我运行以下代码时,会得到以下输出:
在我的本地机器上,当我运行以下代码时,会得到以下输出:
$ git push web
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 291 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: /bin/bash: GIT_WORK_TREE=/var/www/html git checkout -f: No such file or directory
To ssh://MyDomainRemoved.com/var/git/myproject.git
d8a9173..7903ea9 master -> master
在线服务器上,新的提交会出现在$ git log
中。它与post-receive钩子有问题。这是目前post-receive文件的样子:
#!/bin/bash GIT_WORK_TREE=/var/www/html git checkout -f
我已经尝试过一些其他帖子中提到的方法:
- 尝试使用
#!/bin/bash
和#!/bin/sh
- 移除了
#!/bin/bash
行上隐藏的回车符。这使得bash无需打开错误即可运行,但仍然出现了“没有此文件”的错误。 - 将/var/www/的所有权更改为用户www-data
- 将/var/www/ 的 CHMOD 更改为777(仍然出现“没有此文件”的错误)
服务器是Ubuntu 16.04。
还有其他尝试的想法吗?
git remote -v
的输出。 - orvi$ git remote -v
origin ssh://git@bitbucket.org/myusername/myproject.git (获取) origin ssh://git@bitbucket.org/myusername/myproject.git (推送) web ssh://root@MyDomainRemoved.com/var/git/myproject.git (获取) web ssh://root@MyDomainRemoved.com/var/git/myproject.git (推送)
- Wespost-receive
文件在哪里? - orvipost-receive
文件:#!/bin/bash export GIT_DIR=/var/git/myproject/.git/ export GIT_WORK_TREE=/var/git/myproject/ cd /var/git.myproject/ git fetch git merge origin/master git submodule update --init --recursive
- orviGIT_DIR=
这个主要部分,因为它是你和 @VonC 的主要区别,而最终选择了 VonC 的方法,因为它能完成任务,而不需要其他可能用不到的命令。 - Wes