Git该怎么部署代码?

2013-09-03 16:27:38 +08:00
 zzWinD
在学习Git 最近.但是貌似Git 自身是没有部署代码的功能
要自己通过写bash 或者怎么样的去实现么?
各位大神是怎么通过git 发布和部署website的~求指点
11990 次点击
所在节点    程序员
14 条回复
lichao
2013-09-03 16:32:11 +08:00
我是直接在服务器上 pull 的
PrideChung
2013-09-03 16:35:41 +08:00
git 本质上只是一个版本管理系统,虽然一些对 git 和 shell 玩得比较转的人可以通过 git hook 实现 push 后自动部署,但我是不太建议直接用来部署网站,最好还是用 Capistrano,Mina 之类的部署工具。
确实想用 git 来部署的话,可以看这篇文章 https://coderwall.com/p/xczkaq
okidogi
2013-09-03 16:36:25 +08:00
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
2013-09-03 16:54:33 +08:00
是的,用git hooks,检测push操作,然后在hook脚本里面用shell命令来部署
timothyye
2013-09-03 16:56:43 +08:00
另外,Capistrano这里累类工具也相当好用
humiaozuzu
2013-09-03 17:12:06 +08:00
推荐 staging 服务器用 git hook,production 服务器用 pull ,因为生存环境的部署需要有完全的控制。
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
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
2013-09-04 10:34:49 +08:00
gitlab https://github.com/gitlabhq/gitlabhq
虽然还有不少bug,不过无视页面功能的情况下是没问题的
scalala
2013-09-04 10:36:00 +08:00
oh...,无视我的回复,以为说的部署git服务器...
PrideChung
2013-09-04 20:34:20 +08:00
@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
2014-05-23 11:28:51 +08:00
搭车提问。
服务器上已有代码仓库;
比如:test.git ,包含两个分支:dev 和 prod;
如何在本地实现:
git push dev 把代码部署到 /服务器路径/dev
git push prod 把代码部署到 /服务器路径/prod
sleshep
2016-02-02 17:02:21 +08:00
@solar
add remote
然后就可以推送指定的了

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

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

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

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

© 2021 V2EX