我对 git 是不是有重大的误解,以及各位如何优雅地把本地完成的 javaweb 项目部署到服务器上呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Newyorkcity
V2EX    问与答

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

  •  
  •   Newyorkcity 2018-05-06 10:27:07 +08:00 3686 次点击
    这是一个创建于 2719 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我一开始以为 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。。但就是不怎么优雅)到底应该怎么做啊?
    cyheng
        1
    cyheng  
       2018-05-06 10:38:20 +08:00 via Android
    jekins 了解一下
    cs923
        2
    cs923  
       2018-05-06 10:43:45 +08:00 via Android
    直接在服务器上撸 (被卡哭)…
    caixiexin
        3
    caixiexin  
       2018-05-06 10:43:55 +08:00 via Android
    服务端的 git 仓库,默认是看不到目录文件的
    git 应该管理的是源码,不是编译后的文件
    服务器上用类似 Jenkins 的 ci,每次 git 推送后触发编译构建重新部署才对
    Newyorkcity
        4
    Newyorkcity  
    OP
       2018-05-06 10:47:55 +08:00
    @cs923 服务器上撸还要部署图形化界面然后下载 IDE 才能编辑。。真的会被卡哭,而且我也只是破烂服务器。。
    Newyorkcity
        5
    Newyorkcity  
    OP
       2018-05-06 10:48:34 +08:00
    @cyheng
    @caixiexin
    几位学习 jekins 的时候看的什么书或者博客入门的呢?能推荐一下嘛?
    wplct
        7
    wplct  
       2018-05-06 11:06:36 +08:00
    git 千万别放二进制文件
    grantonzhuang
        8
    grantonzhuang  
       2018-05-06 11:11:13 +08:00 via Android
    bare 仓库应该是你需要的。
    不上 CI 工具,那就是自己在服务器放一个目录,同步代码到这个目录,执行完编译操作把资源文件放到 tomcat 的目录下
    grantonzhuang
        9
    grantonzhuang  
       2018-05-06 11:17:48 +08:00 via Android
    @grantonzhuang 补充,就是 “你的电脑上的项目” 到 “ bare 仓库” 到 “服务器上的项目”
    AlphaTr
        10
    AlphaTr  
       2018-05-06 11:20:53 +08:00 via iPhone
    裸仓库配合 hook 钩子应该满足你的要求
    Asimov01
        11
    Asimov01  
       2018-05-06 11:21:45 +08:00
    @cyheng Jenkins 超好用
    caeger
        12
    caeger  
       2018-05-06 11:23:25 +08:00 via Android
    同意十楼 在 hook 里面可以写脚本拉取到最新的代码,然后部署
    GreatHumorist
        13
    GreatHumorist  
       2018-05-06 11:24:22 +08:00 via iPhone
    git pull 了解一下?
    mrcn
        14
    mrcn  
       2018-05-06 11:26:49 +08:00 via Android
    git 服务端只有.git 文件夹。一般是 push 进仓库后触发 hook,用脚本在 Apache/Nginx 监听的目录再 pull。(这时监听的目录也是一个 git 客户端)
    msg7086
        15
    msg7086  
       2018-05-06 11:59:28 +08:00
    是重大误解。Git 是版本控制系统,和文件同步没有任何关系。

    测试服务器同步可以考虑用 Syncthing,生产服务器部署应该用专业部署工具。
    (比如 Ruby 圈子做部署应该用 mina 或者 capistrano。
    jin5354
        16
    jin5354  
       2018-05-06 12:04:05 +08:00
    git 只用来管理源码,同步生产文件不是他该做的事
    同步文件,可以手写 rsync,也可以用 ci,想做到自动化就结合 git 的 hook
    sagaxu
        17
    sagaxu  
       2018-05-06 12:20:43 +08:00 via Android
    你的误解是可行的,我就是用 git 管理 java 的二进制部署。不要用 bare 部署,在部署的机器上 clone 一个普通仓库,然后 pull 加重启
    yanhejihe
        18
    yanhejihe  
       2018-05-06 12:46:26 +08:00
    git hook 了解一下
    ddou
        19
    ddou  
       2018-05-06 12:52:26 +08:00 via iPhone
    开发,打包,部署。别把 Git 用在不该用的地方
    ob
        20
    ob  
       2018-05-06 13:29:49 +08:00 via Android
    idea sftp 目录映射,了解一下
    micean
        21
    micean  
       2018-05-06 13:44:33 +08:00   1
    你需要在云服务器 clone 一个仓库,然后通过 bare 仓库的 git hook 在你本地 push 之后,在云服务器 clone 的那个仓库进 pull 操作,最后在进行打包等其他操作。
    wm5d8b
        22
    wm5d8b  
       2018-05-06 14:20:03 +08:00
    听起来楼主需要 sftp ?
    cigarzh
        23
    cigarzh  
       2018-05-07 00:14:06 +08:00 via iPhone
    开发环境 测试环境 生产环境不一样的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5360 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 05:53 PVG 13:53 LAX 22:53 JFK 01:53
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86