git自动化(半自动)部署
title: git自动化(半自动)部署 date: 2023-01-26 categories: - other publish: true
2023/01/24🙄号就发觉自己的项目推到服务器太过于繁琐,需要人的地方太多 ( 就是懒 )😂,加上我朋友刚巧跟我说了下他笔记的存放不方便而做出的自动化部署,我就觉得我也得实现自己的自动化😜。
环境:
本地:Windows10
服务器:CentOS7.6
git版本:1.8.3.1
远程服务连接工具:finalshell
git 两种初始化的区别
git
初始化分为两种:
git init
和 git init --bare
上面二者区别: 正常库/普通库:使用 git init
创建即可。包含了工作区,可以正常的进行源文件的编写,提交等各种 git
常规操作。
裸库:使用 git init --bare
创建。创建之后里面有很多文件,并非只有一个 .git
目录。它主要是只保存历史提交的版本信息,不保存文件,所以作用就是作为分享库。
创建裸库
先手动创建裸库的文件夹 ( 感觉好笨。不要杠,有方法的只是我不会而已😂 ),命名随意,但最好其名为 xxx.git
,记住是文件夹,不是文件,有个 .git
是约定俗成,方便一眼丁真😂。就是 git
结尾只是一个标志,让别人一眼看到就是库,约定俗成么。
我们看看普通库和裸库的区别:
可以看到我自己创建的 dist.git
里面的文件和普通库默认 .git
里面的文件夹还是有挺大区别的。
其实我一开始并不理解 git init --bare
的实际作用,只认为不就是创建一个有记录功能没有工作区的裸库么,然后能??直到我看到有人这样说:
bare repository主要是用作分享版本库。开发者使用bare repository可以向其他人分享存储在本地的版本库,以便于实时分享代码更新和团队协作 。通过使用”git push”命令,你可以将你的本地更新提交至“中心版本库”(其他开发者可访问的中心库)。其他开发者可以使用“git pull”命令者接受你提交的版本更新。如果你正在一个多人协作的项目团队或者同一个项目需要在不同电脑上面完成的时候,bare repository可以满足你的分布式开发需求。
链接:https://blog.csdn.net/qq_42694242/article/details/82695162
奥,那我就有点理解了,我的个人理解是 bare
就是在原来的 .git
基础上多了一道工序,多了一道可确定可否定的步骤,就是 git init
创建的普通库不是有工作区么,如果你提交的地址也是普通库,那么当 push
的时候工作区也会直接跟着过去,不利于团队开发,就是你想啊,万一你的 leader
觉得你的提交有问题并且你还是小白沙河的提交到 main
或 master
上去了再或者是环境比较复杂,就像代码块中的文字说的那样,万一你的环境要来回改变,这句话理解因人而异。总而言之 bare
适用于所有环境,更适合复杂环境。听我的从现在尝试用 git init --bare
吧😂。
配置裸库自动化
起作用的主要是 post-receive
。这个就是 git
钩子了,这里不细说了。
post-receive
是在我 dist.git
下面的 hooks
下面
post-receive没有的自己创建。分 git
版本。我的 1.8.3.1 就没有。
克隆仓库
将工作区克隆出来:
一库~拉面一哭贼😂
在 dist.git
的同级目录就是在html目录中拉取代码
输入下面指令:
git clone /usr/local/nginx/html/dist.git
权限
一定要给文件权限!
将 post-receive
文件权限改成 git
用户权限:
chown -R git:git post-receive
给 post-recrive
文件添加上运行权限:
chmod +x post-receive
给 dist
文件权限改成 git
用户权限:
chown -R git:git dist
git一些基本操作
连接远程仓库:git remote add origin git@ip:/usr/local/nginx/html/kk/keep.git
git
查看远程仓库地址命令:git remote -v
将所有文件添加到 git .
暂存仓(. 表示所有):git add .
使用 git bash
连接登录远程服务器:ssh root@ip
查看远程分支版本:git branch -a
将项目推送到远程仓库:git push -u origin master
查看权限:ll