受到这个 gist 的影响,尝试使用 git 把项目部署到盛大云的 VPS: https://gist.github.com/1372694 按照原文的方法按部就班地尝试:
我们将把在本地开发的 project
项目的 git 仓库托管到 VPS 上。现在 VPS 上初始化一个 git 仓库:
~ $: mkdir git
~ $: cd git
~ $: mkdir project-demo
~ $: cd project-demo
~ $: git init
~ $: git config --bool core.bare true
然后回到本地,设置本地的仓库。新建的 project-demo
是部署专用的。
~ Sites$: mkdir project-demo
~ Sites$: cd project-demo
~ project-demo$: git clone user@vps:git/project-demo .
添加一个 remote,名为 local,指向本地的 git 仓库。
~ project-demo$: git remote add local ~/Sites/project
将 project
仓库中的内容抓取到 project-demo
中,然后合并。
~ project-demo$: git fetch local
~ project-demo$: git merge local/master
最后,将合并后的仓库推送到 VPS 上。
~ project-demo$: git push origin master
以后基本的工作方式是:
project
中做开发project
中的仓库抓取到 project-demo
中project-demo
中的仓库推送到 VPS 上至于为什么要 project
和 project-demo
两个仓库,是为了将开发和部署分开。实际部署和本地开发所使用的工具有所不同,例如在本地使用默认的 WEBrick 做服务器即可,而在实际的生产环境中使用 nginx+unicorn,而 unicorn 是需要在程序中保存配置文件的;还有就是下面会用到的 capistrano 这个 gem,它也是需要配置文件的。这些配置文件是针对服务器上特定的 App 的,而且在开发中是不必须的。把开发和部署分开也便于将开发的 App 开源,托管在 Github 等。
出现的问题是,最后一步git push origin master
之后,提示上传成功,但是在服务器对应的文件夹里面除了 .git 以外还是看不到任何东西。想请教一下可能问题的原因是什么?