导语
上文介绍了怎么通过 PhpStorm 使用 FTP 同步代码文件,到目前为止使用了近四个月。这种方式和 Git 互有利弊,总体来说还是 Git 更方便一些,下面记录下使用 Git 同步以及部署的过程。服务器版本为 CentOS 7.2,本地为 Mac。
流程
首先说明一下开发以及部署的流程。这个项目目前只是个人练习,所以不涉及团队合作。在经过下面的改造后,开发流程如下
- 本地开发,环境使用的是 Homestead
- Git 上传代码到服务器的裸仓库中
- 裸仓库使用 Git Hook 自动部署到正式目录中
- 在正式目录中将代码手动上传到 GitHub
本地开发完成后,执行一次 git push
即可自动部署代码到正式目录,正式目录中再执行一次 git push
上传到 GitHub。
实际在最后一步的时候,也可以使用 Git Hook 自动上传代码到 GitHub,也就是整个流程只需要一次 git push
即可。🤔,暂时不了。
下面的过程会分为已有代码和无代码两种情况进行。
服务器添加 Git 用户
- 参考之前写的创建新用户,创建 git 用户
- 禁用 git 用户使用 shell 登陆,编辑
/etc/passwd
,将git:x:1001:1001::/home/git:/bin/bash
修改为git:x:1001:1001::/home/git:/usr/bin/git-shell
- 使用证书设置免密,参考这篇文章中的生成密钥、服务器配置,将本地的
id_rsa.pub
写入到/home/git/.ssh/authorized_keys
文件中
建立 Git 裸仓库
- 新建目录,用于存储所有 Git 裸仓库。我是在根目录下新建了
git
目录,根据情况自己选择 - 设置目录所有者为 git,
chown git:git git
- 在 git 目录下,初始化一个裸仓库
git init --bare my_laravel.git
,--bare
参数即为指定裸仓库 - 修改所有者为 git,
chown -R git:git my_laravel.git
本地克隆代码
分为两种情况,一种是本地已有代码,也就是我目前的情况;另一种是没有,从仓库中 clone
下来新建。
已有代码
- 在代码目录中,初始化 git,
git init
- 添加所有文件,
git add .
- 提交
git commit -m 'init'
- 将代码与远端仓库建立连接,
git remote add origin git@you_servier:/you_git_path/my_laravel.git
-
push
代码,git push origin master
- 设置分支跟踪
git branch --set-upstream-to=origin/master master
服务器中的裸仓库中已经有了记录
新建项目
- 直接
clone
就可以了,git clone git@you_server:/you_git_path/my_laravel.git
- 然后就是正常的
add
、commit
、push
服务器中裸仓库的记录也是正确的
结语
至此服务端与本地的代码同步已经完成。余下的问题,下篇继续。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。