#创建一个名叫jouzeyu的用户adduserjouzeyu
第二步:给 git 用户添加权限
#在根目录下的home文件夹下创建一个git文件夹mkdir/home/git#切换到创建好的git文件夹cd/home/git#创建.ssh文件夹,里面紧张用来放公钥mkdir.ssh#切换到.ssh文件夹并创建authorized_keys文件cd.sshtouchauthorized_keys
第三步:配置 git 并获取公钥
#在本地配置用户名和邮箱,我的用户名默认为jouzeyugit config --global user.name "jouzeyu"git config --global user.email "your email"
把稳:如果用了 --global 选项,那么往后你所有的项目都会利用这里配置的用户信息。如果要在某个特定的项目中利用其他名字或邮箱,只需在该项眼前实行:

git config user.name "xxx"git config user.email "xxx"
接下来我们获取公钥,请先查看你的用户下的.ssh 文件夹中是否之前就含有公钥和私钥,我们须要探求一对以 id_dsa 或 id_rsa 命名的文件,个中一个带有 .pub 扩展名。.pub 文件是你的公钥,另一个则是私钥。如果没有请运行 ssh-keygen。利用 cat ~/.ssh/id_rsa.pub 命令可以获取公钥,复制它,利用 vi 或者 vim 命令把它粘贴到我们之前创建的 authorized_keys 文件中,利用:wq 保存。第四步:初始化仓库创建一个存放 git 仓库的文件夹:
初始化仓库:
#初始化一个裸仓库(强烈建议)git init --bare website.git#配置仓库的权限,让我们之前创建好的git用户jouzeyu能读写chown -R git:git website.git
这里必须把稳,如果不给权限,后面的 git pull 将会报错,缘故原由是没有权限写入。关于裸仓库和普通仓库的差异大略来说便是裸仓库看不到项目文件,普通仓库和你的项目目录一样,只是多了一个.git 文件夹。第五步:天生项目仓库这个也是在做事器上进行的,同时解释一下 /www/wwwroot/ 是我的环境的根目录。
#创建我做事器上的项目目录testmkdir /www/wwwroot/test#克隆仓库git clone /www/wwwroot/git/website.git#设置权限chown -R git website
把稳:一定要把稳我的路径,git 仓库是 /www/wwwroot/git, 项目仓库是 /www/wwwroot/test。
第六步:克隆到本地
# 通过ip地址从配置好的线上仓库拉取下来git clone git@47.97.121.XXX:/www/wwwroot/git/website.git# 如果有配置域名的话也可以通过域名拉取git clone git@www.XXX.XXX:/www/wwwroot/git/website.git
由于公钥的缘故原由,这里是不须要密码的,如果成功你的电脑上会涌现一个 website 的文件夹,如果报错请检讨后再进行下面的操作。第七步:上传代码(git push)
# 打开刚才克隆下来确当地仓库cd website# 创建README.md文件touch README.mdgit add .git commit -m"创建README.md文件"git push
不出意外已经正常上传了,如果报错请检讨权限,上文提到过,如果还弗成可以不才方评论。第八步:添加钩子写的比较细,现在才来讲钩子,回到我们线上的做事器,下面的是在线上操作的:
#切换到这个目录cd /www/wwwroot/git/website.git/hooks# 天生post-receive文件touch post-receive# 利用vim编辑vim post-receive
在 post-receive 文件里面粘贴:
#!/bin/sh# 打印输出echo '======上传代码到做事器======'# 打开线上项目文件夹cd /www/wwwroot/test/website# 这个很主要,如果不取消的话将不能在cd的路径上进行git操作unset GIT_DIRgit pull origin master# 自动编译vue项目,如有须要请去掉前面的#号# npm run build# 自动更新composer(我暂时没试过)# composer updateecho $(date) >> hook.logecho '======代码更新完成======'
保存后给 post-receive 文件加上运行权限
chmod+xpost-receive
末了一步在本地修正部分内容,然后提交推送 git push,可以看到我们已经实现了自动化支配。
扩展链接:PHP经典算法,或许你须要理解一下