没有使用Git post-receive checkout更新远程存储库:"' -f'与任何文件都不匹配'

时间:2018-01-12 22:25:24

标签: git

我正在尝试设置Git,只需运行linode即可更新远程网络服务器上的代码(让我们称之为git push [remote_name])。我遵循几乎完全相同的教程herehere)。

该方法涉及在服务器上创建一个(最初为空的)工作树文件夹(例如,/home/username/www),以及一个带有可执行文件后的裸Git存储库(在/home/username/website.git中初始化)。接收看起来如下的钩子:

#!/bin/sh
GIT_WORK_TREE=/home/username/www git checkout –f

当我将代码从本地计算机推送到服务器时,该结帐失败:

$ git push web +master:refs/head/master
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 222 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: error: pathspec '–f' did not match any file(s) known to git.

远程Git存储库似乎正确更新:后续推送返回Everything up-to-date。但是,工作树文件夹/home/username/www仍为空。

解决方案尝试:

Google搜索此错误的最后一行只会生成一个结果(在this article的注释中),此处的解决方案不适用(我做了使得后接收挂钩可执行文件与chmod +x)。

我已成功实施上述策略来更新科学计算集群上的脚本(让我们称之为scc),所以显然我可以在某些情况下正确设置它。但是,在发现导致此问题的服务器配置差异时,我感到很茫然。

一个区别可能是scc运行Git 1.7.1,linode运行2.7.4。我承认我不知道如何在linode上安装Git 1.7.1,因为它不适用于apt-get。无论如何,我认为最好使用2.7.4。

注意:linode运行Ubuntu 16.04

0 个答案:

没有答案