前言
在开发机上开发完成一个小版本的开发之后,需要将代码部署到开发服务器上,但由于代码仍在测试中,可能需要频繁修改代码,每次打包都会显得很麻烦,而每次手动将修改的代码复制到服务器上更是低效的做法,因此想到了用Git的钩子来解决这个痛点,下面是具体的操作。
准备工作
首先是在开发机和服务器上都安装Git,我使用的Git版本如下:
- Windows开发机:
git version 2.33.0.windows.2
- Linux开发服务器:
git version 2.17.1
其次是配置本机的SSH密钥,生成密钥的命令如下:
1 | ssh-keygen -t rsa # 一路回车即可 |
然后将公钥复制到服务器的~/.ssh/authorized_keys
文件上,当SSH连接服务器不需要输入密码时,表示这项配置成功,具体是怎么配置的这里就不说明了,上网查查大把教程。
服务器的配置
首先是建立一个Git裸库,用于保存提交信息,仓库建立的位置和名字可以自行修改,但需要记住,等会要用。
1 | cd ~ |
接着建立一个空文件夹,用于存放从开发机同步过来的代码,文件夹创建的位置和名字可自行修改,但需要记住,也是要用的。
1 | cd ~ |
然后编写Git的Hooks脚本,这里用的是post-receive
脚本,该脚本在仓库发生提交后自动执行,我们使用该脚本将仓库中最新的代码同步到代码文件夹中。
1 | vim ~/repo.git/hooks/post-receive |
将以下语句写入钩子文件中,其中的两个路径,第一个是同步代码的文件夹所在位置,第二个是仓库的位置。
1 |
|
保存退出vim后,赋予该脚本执行权限。
1 | chmod +x /home/fisher/repo.git/hooks/post-receive |
至此,服务器端的配置完成,接下来是开发机的配置。
开发机的配置
如果开发机的项目不是Git项目,则需要进入项目的根目录,执行以下命令初始化为Git项目并提交一下,如果已经是Git项目,则这一步跳过,直接添加远程仓库地址即可。
1 | git init |
接着添加远程仓库地址,其中USER
表示你在服务器上使用的用户,ADDRESS
表示服务器的地址,:
接服务器上仓库的地址。
1 | git remote add origin USER@ADDRESS:/home/fisher/repo.git |
使用以下命令查看远程仓库地址的添加是否成功。
1 | git remote -v |
添加远程仓库地址之后,将代码提交到仓库中。
1 | git push origin master |
至此,开发机的配置也完成了,需要同步的时候,就用Git将代码提交到远程仓库即可。
查看效果
提交代码之后,在服务器的~/code/
文件夹中应该能看到与开发机项目相同的目录结构,这时候就能够直接在服务器上部署测试的代码了,当本地开发机代码修改之后,使用Git提交到远程仓库,开发服务器上的代码也会同步修改了。