我正在尝试设置Git,只需运行linode
即可更新远程网络服务器上的代码(让我们称之为git push [remote_name]
)。我遵循几乎完全相同的教程here和here)。
该方法涉及在服务器上创建一个(最初为空的)工作树文件夹(例如,/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