确定。我知道我会说这令人困惑,我先前道歉。这就是我想要做的事情:
原因是因为我希望在网络服务器上运行 forever 之类的东西(恰好是NGINX,而不是它很重要),以便它会注意到文件已经改变并重新加载node.js应用程序。这不是我需要帮助的部分,我只是希望尽可能彻底。
现在问题,我可以在服务器上设置一个git repo,以便我可以实际看到这些文件吗?我知道服务器端在技术上应该是裸机,据我所知,这意味着我无法从技术上看到这些文件,它只用于存储信息。
我如何设置它或者我试图做一些不可能的事情?我只是想避免FTP或其他一些奇怪的方式,如果我可以用git push,pull,merge等来做。最后,我打算运行一个生产分支&开发分支在不同的端口上并使它们同时运行,这样我就可以将更改合并到生产中,而无需进行大量额外的工作。无论哪种方式,我打算使用git。我想像我描述的那样使用它。 :)
如果我是荒谬或其他什么,你可以告诉我。我对git知之甚少,并试图更好地理解它。
提前致谢!
答案 0 :(得分:0)
您需要做的是实施持续集成/部署。总的来说,这是一个非常广泛的主题,但我可以为您提供一些您阅读并弄明白的链接。
答案 1 :(得分:0)
创建 project_contents 目录,如下所示:
/opt/project_contents/
创建 project.git 目录,如下所示:
/var/git/project.git/
在 project.git 目录中,运行以下命令:
git init --bare
现在你需要告诉git每次推送某些命令时都会运行某些命令 project.git 。所以在 /中创建一个名为 post-receive 的文件var / git / project.git / hooks / 目录。 收到后文件内容可能如下所示:
#!/bin/sh
git --work-tree=/opt/project_contents/ --git-dir=/var/git/project.git/ checkout -f
因此,每次对此 project.git 执行git推送时,它都会将项目内容存储在 / opt / project_contents / 目录中。 您可能还希望通过此收到后文件自动安装节点模块。为此,请将以下行附加到收到后文件。
cd /opt/project_contents/server/
npm install
确保后接收文件是可执行的。要执行此操作,请运行:
chmod +x /var/git/project.git/hooks/post-receive
使用以下命令将prduction服务器的 project.git 目录添加为本地git项目目录的git remote。
git remote add prod ssh://user_name@server_name/var/git/project.git
要将当前项目推送到生产服务器,请运行:
git push prod master
注意:
您还可以参考https://ma.ttias.be/simple-git-push-workflow-deploy-code-server/以获得更好的理解。