Git该怎么部署代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
zzWinD
V2EX    程序员

Git该怎么部署代码?

  •  1
     
  •   zzWiD 2013-09-03 16:27:38 +08:00 12326 次点击
    这是一个创建于 4423 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在学习Git 最近.但是貌似Git 自身是没有部署代码的功能
    要自己通过写bash 或者怎么样的去实现么?
    各位大神是怎么通过git 发布和部署website的~求指点
    14 条回复    2016-02-02 17:02:21 +08:00
    lichao
        1
    lichao  
       2013-09-03 16:32:11 +08:00
    我是直接在服务器上 pull 的
    PrideChung
        2
    PrideChung  
       2013-09-03 16:35:41 +08:00   1
    git 本质上只是一个版本管理系统,虽然一些对 git 和 shell 玩得比较转的人可以通过 git hook 实现 push 后自动部署,但我是不太建议直接用来部署网站,最好还是用 Capistrano,Mina 之类的部署工具。
    确实想用 git 来部署的话,可以看这篇文章 https://coderwall.com/p/xczkaq
    okidogi
        3
    okidogi  
       2013-09-03 16:36:25 +08:00   1
    infong
        4
    infong  
       2013-09-03 16:40:05 +08:00
    用 git 的 hooks。
    我是这样做的:
    在网站服务器上创建一个 git 远程仓库,在 hooks 下面创建 post-receive 脚本,此脚用来 checkout 代码到网站的目录下。这样在每次提交 push 到服务器上的 git 仓库的时候会自动执行 post-receive 脚本,从而部署最新代码。

    hooks 用法参考:http://git-scm.com/book/en/Customizing-Git-Git-Hooks
    timothyye
        5
    timothyye  
       2013-09-03 16:54:33 +08:00 via Android
    是的,用git hooks,检测push操作,然后在hook脚本里面用shell命令来部署
    timothyye
        6
    timothyye  
       2013-09-03 16:56:43 +08:00 via Android
    另外,Capistrano这里累类工具也相当好用
    humiaozuzu
        7
    humiaozuzu  
       2013-09-03 17:12:06 +08:00
    推荐 staging 服务器用 git hook,production 服务器用 pull ,因为生存环境的部署需要有完全的控制。
    kfll
        8
    kfll  
       2013-09-03 19:34:16 +08:00
    ~/projectA/code $ git pull
    ~/projectA/code $ [ -d ~/projectA/workspace ] || mkdir ~/project/workspace
    ~/projectA/code $ rsync -ap ~/projectA/code/* ~/projectA/workspace
    ~/projectA/code $ cd ~/projectA/workspace
    ~/projectA/workspace $ do some deploy
    zzWinD
        9
    zzWinD  
    OP
       2013-09-04 10:24:41 +08:00
    @lichao 个人项目pull 倒没事,只有一个人也省事儿.但是公司的团队 每个成员提交代码的测试通过以后部署都要去服务器上pull,可能比较麻烦 :D
    @PrideChung 按照这篇文章的做法做了一遍感觉so easy,也初步达到了我要的效果.但是文章中的两个git config 不解 core.worktree 和 receive.denycurrentbranch core.worktree 设置工作目录?receive.denycurrentbranch 拒绝当前目录? 你知道是啥意思不 请赐教~~
    Capistrano 我在尝试中 推荐的肯定不赖 XD

    @infong 嗯 这种方法尝试过啦 感觉不错~ 虽然过程是实现了 但是原理和设置不懂 再研究研究 ;)
    scalala
        10
    scalala  
       2013-09-04 10:34:49 +08:00
    gitlab https://github.com/gitlabhq/gitlabhq
    虽然还有不少bug,不过无视页面功能的情况下是没问题的
    scalala
        11
    scalala  
       2013-09-04 10:36:00 +08:00
    oh...,无视我的回复,以为说的部署git服务器...
    PrideChung
        12
    PrideChung  
       2013-09-04 20:34:20 +08:00   1
    @zzWinD 那两行git config主要的作用是让你可以push到一个non-bare的git repo,一般的通过git init创建的repo是non-bare的,包含.git目录和实际的项目文件,这种repo默认是不能接受push的。bare的git repo只包含一个.git文件夹,只作中央版本控制的作用,这种repo才能接受push。但是这种情况下服务器的repo需要实际的项目代码,又需要能接受push,就只能这么搞了。这也是为什么我不喜欢这种做法,感觉有点Hack,我个人偏爱用Mina部署。
    solar
        13
    solar  
       2014-05-23 11:28:51 +08:00
    搭车提问。
    服务器上已有代码仓库;
    比如:test.git ,包含两个分支:dev 和 prod;
    如何在本地实现:
    git push dev 把代码部署到 /服务器路径/dev
    git push prod 把代码部署到 /服务器路径/prod
    sleshep
        14
    sleshep  
       2016-02-02 17:02:21 +08:00
    @solar
    add remote
    然后就可以推送指定的了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 20:07 PVG 04:07 LAX 13:07 JFK 16:07
    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