Git推送到远程“没有这样的文件或目录”

时间:2017-02-17 21:34:58

标签: linux git bash ubuntu

我正在尝试将更改从本地计算机推送到实时服务器。我按照this page上的步骤进行了操作。

在我的本地计算机上,以下是我运行时的内容:$ 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 hook 时遇到问题。以下是接收后文件现在的样子:

#!/bin/bash GIT_WORK_TREE=/var/www/html git checkout -f

我已经尝试过其他一些我读过的主题:

  • 尝试#!/bin/bash#!/bin/sh
  • 删除#!/bin/bash行上的隐藏回车。这允许bash在没有打开错误的情况下运行,但仍然没有这样的文件错误。
  • / var / www / 更改为由用户拥有 www-data
  • CHMOD / var / www / 777 (仍然没有此类文件错误)

服务器是Ubuntu 16.04。

有关其他事情的想法吗?

1 个答案:

答案 0 :(得分:1)

确保将您的脚本放在多行而不是一行:

#!/bin/bash 
GIT_WORK_TREE=/var/www/html git checkout -f

完整的命令是:

git --work-tree=/var/www/html --git-dir=/var/git/myproject/.git checkout -f