导语
上文介绍了怎么通过 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
服务器中裸仓库的记录也是正确的
结语
至此服务端与本地的代码同步已经完成。余下的问题,下篇继续。
参考资料:搭建 Git 服务器、如何将一个已存在的目录转换为一个 GIT 项目并托管到 GITHUB 仓库。