我对 git 是不是有重大的误解,以及各位如何优雅地把本地完成的 javaweb 项目部署到服务器上呢?

2018-05-06 10:27:07 +08:00
 Newyorkcity
我一开始以为 git 能够做到这样一个效果
比如我把服务器端的 /usr/local/tomcat7/webapps/SomeProject/这个文件夹作为一个远程 git 仓库
我本地的 java 项目所在的文件夹是一个本地 git 仓库
然后我编辑好这个 Java 项目,比如说弄了一个 a.jsp 吧通过 git 把这个项目推送到 /usr/local/tomcat7/webapps/SomeProject/,这样服务器端就有了这么个 a.jsp 。然后更新服务器端 tomcat,就能访问那个 a.jsp 了( IP 地址 /SomeProject/a.jsp )
这是我一开始对 git 的理解。。

====分割线===

但实际操作里我发现。在云服务器那边,如果新建一个仓库为裸仓库,那么推送过去的文件你实际上根本不知道在哪儿。我尝试在本地仓库新增了一个 test.txt ,然后 push 过去,我找半天都没有办法在服务器端直接找到这个 test.txt 文件。但是,我再从服务器端 clone 到本地另一个新文件夹,test.txt 就完整的回来了。。。也就是说裸仓库中不会直接出现推送过去的文件?那显然我的目的就达不到了啊。( IP 地址 /SomeProject/a.jsp 可是 a.jsp 并不存在)
而如果新建一个非裸仓库在云服务器,它直接报错,我查了一下是因为 git 默认拒绝向非裸仓库进行推送。也就是说不支持这种行为。虽然好像能改参数改成支持,但我没改,因为 git 不支持这种行为,说明我一开始的那种需求并不是 git 想要完成的。

====分割线===

所以我现在就很迷。我也不是没搜索过,但就只能找到一些莫名其妙的或者太高深的内容。
我就奇了怪了,学习 java web 的人,难道就没有经历过如何优雅地把在本地编辑好地,运行 OK 的 java web 项目优雅地部署到服务器上去嘛?(用 FileZilla 这类软件,把本地的 javaweb 项目文件夹直接复制粘贴过去 OK 是 OK。。但就是不怎么优雅)到底应该怎么做啊?
3391 次点击
所在节点    问与答
23 条回复
micean
2018-05-06 13:44:33 +08:00
你需要在云服务器 clone 一个仓库,然后通过 bare 仓库的 git hook 在你本地 push 之后,在云服务器 clone 的那个仓库进行 pull 操作,最后在进行打包等其他操作。
wm5d8b
2018-05-06 14:20:03 +08:00
听起来楼主需要 sftp ?
cigarzh
2018-05-07 00:14:06 +08:00
开发环境 测试环境 生产环境不一样的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/452482

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX