3

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

 2 years ago
source link: https://fisher.lazybone.xyz/%E4%BD%BF%E7%94%A8git%E5%90%8C%E6%AD%A5%E5%BC%80%E5%8F%91%E6%9C%BA%E4%B8%8E%E5%BC%80%E5%8F%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E4%BB%A3%E7%A0%81.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在开发机上开发完成一个小版本的开发之后,需要将代码部署到开发服务器上,但由于代码仍在测试中,可能需要频繁修改代码,每次打包都会显得很麻烦,而每次手动将修改的代码复制到服务器上更是低效的做法,因此想到了用Git的钩子来解决这个痛点,下面是具体的操作。

首先是在开发机和服务器上都安装Git,我使用的Git版本如下:

  • Windows开发机:git version 2.33.0.windows.2
  • Linux开发服务器:git version 2.17.1

其次是配置本机的SSH密钥,生成密钥的命令如下:

ssh-keygen -t rsa	# 一路回车即可

然后将公钥复制到服务器的~/.ssh/authorized_keys文件上,当SSH连接服务器不需要输入密码时,表示这项配置成功,具体是怎么配置的这里就不说明了,上网查查大把教程。

服务器的配置

首先是建立一个Git裸库,用于保存提交信息,仓库建立的位置和名字可以自行修改,但需要记住,等会要用。

cd ~
git init --bare repo.git

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

cd ~
mkdir code

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

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

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

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

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

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

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

开发机的配置

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

git init
git add .
git commmit -m "Initial commit"

接着添加远程仓库地址,其中USER表示你在服务器上使用的用户,ADDRESS表示服务器的地址,:接服务器上仓库的地址。

git remote add origin USER@ADDRESS:/home/fisher/repo.git

使用以下命令查看远程仓库地址的添加是否成功。

git remote -v

添加远程仓库地址之后,将代码提交到仓库中。

git push origin master

至此,开发机的配置也完成了,需要同步的时候,就用Git将代码提交到远程仓库即可。

提交代码之后,在服务器的~/code/文件夹中应该能看到与开发机项目相同的目录结构,这时候就能够直接在服务器上部署测试的代码了,当本地开发机代码修改之后,使用Git提交到远程仓库,开发服务器上的代码也会同步修改了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK