1
lichao 2013-09-03 16:32:11 +08:00
我是直接在服务器上 pull 的
|
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 |
3
okidogi 2013-09-03 16:36:25 +08:00 1
|
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 |
5
timothyye 2013-09-03 16:54:33 +08:00 via Android
是的,用git hooks,检测push操作,然后在hook脚本里面用shell命令来部署
|
6
timothyye 2013-09-03 16:56:43 +08:00 via Android
另外,Capistrano这里累类工具也相当好用
|
7
humiaozuzu 2013-09-03 17:12:06 +08:00
推荐 staging 服务器用 git hook,production 服务器用 pull ,因为生存环境的部署需要有完全的控制。
|
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 |
9
zzWinD OP @lichao 个人项目pull 倒没事,只有一个人也省事儿.但是公司的团队 每个成员提交代码的测试通过以后部署都要去服务器上pull,可能比较麻烦 :D
@PrideChung 按照这篇文章的做法做了一遍感觉so easy,也初步达到了我要的效果.但是文章中的两个git config 不解 core.worktree 和 receive.denycurrentbranch core.worktree 设置工作目录?receive.denycurrentbranch 拒绝当前目录? 你知道是啥意思不 请赐教~~ Capistrano 我在尝试中 推荐的肯定不赖 XD @infong 嗯 这种方法尝试过啦 感觉不错~ 虽然过程是实现了 但是原理和设置不懂 再研究研究 ;) |
10
scalala 2013-09-04 10:34:49 +08:00
gitlab https://github.com/gitlabhq/gitlabhq
虽然还有不少bug,不过无视页面功能的情况下是没问题的 |
11
scalala 2013-09-04 10:36:00 +08:00
oh...,无视我的回复,以为说的部署git服务器...
|
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部署。
|
13
solar 2014-05-23 11:28:51 +08:00
搭车提问。
服务器上已有代码仓库; 比如:test.git ,包含两个分支:dev 和 prod; 如何在本地实现: git push dev 把代码部署到 /服务器路径/dev git push prod 把代码部署到 /服务器路径/prod |