自由尋覓快樂別人從沒法感受

0%

使用Git同步开发机与开发服务器的代码

前言

在开发机上开发完成一个小版本的开发之后,需要将代码部署到开发服务器上,但由于代码仍在测试中,可能需要频繁修改代码,每次打包都会显得很麻烦,而每次手动将修改的代码复制到服务器上更是低效的做法,因此想到了用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
2
cd ~
git init --bare repo.git

接着建立一个空文件夹,用于存放从开发机同步过来的代码,文件夹创建的位置和名字可自行修改,但需要记住,也是要用的。

1
2
cd ~
mkdir code

然后编写Git的Hooks脚本,这里用的是post-receive脚本,该脚本在仓库发生提交后自动执行,我们使用该脚本将仓库中最新的代码同步到代码文件夹中。

1
vim ~/repo.git/hooks/post-receive

将以下语句写入钩子文件中,其中的两个路径,第一个是同步代码的文件夹所在位置,第二个是仓库的位置。

1
2
#!/bin/sh
git --work-tree=/home/fisher/code --git-dir=/home/fisher/repo.git checkout -f

保存退出vim后,赋予该脚本执行权限。

1
chmod +x /home/fisher/repo.git/hooks/post-receive

至此,服务器端的配置完成,接下来是开发机的配置。

开发机的配置

如果开发机的项目不是Git项目,则需要进入项目的根目录,执行以下命令初始化为Git项目并提交一下,如果已经是Git项目,则这一步跳过,直接添加远程仓库地址即可。

1
2
3
git init
git add .
git commmit -m "Initial commit"

接着添加远程仓库地址,其中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提交到远程仓库,开发服务器上的代码也会同步修改了。