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 initgit 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 觉得你的提交有问题并且你还是小白沙河的提交到 mainmaster 上去了再或者是环境比较复杂,就像代码块中的文字说的那样,万一你的环境要来回改变,这句话理解因人而异。总而言之 bare 适用于所有环境,更适合复杂环境。听我的从现在尝试用 git init --bare 吧😂。

配置裸库自动化

起作用的主要是 post-receive。这个就是 git 钩子了,这里不细说了。

post-receive 是在我 dist.git 下面的 hooks 下面

post-receive没有的自己创建。分 git 版本。我的 1.8.3.1 就没有。

 #!/bin/sh
 
 unset GIT_DIR  #很关键
 
 NowPath=`pwd`
 
 DeployPath="/usr/local/nginx/html/dist" #存放项目的文件夹位置
 
 # LogPath="/usr/local/nginx/html/kk/keep.git/hooks"
 
 cd $DeployPath
 
 
 git add . -A && git stash
 git pull origin master  
 
 
 # >> $LogPath/gitsync.log 2>&1
 
 # composer install --ignore-platform-reqs
 
 cd $NowPath
 
 echo "同步完成"
 
 exit 0
 

克隆仓库

将工作区克隆出来:

一库~拉面一哭贼😂

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

 

 

 

 

 

 

 

 

posted @ 2023-04-02 17:22  Nhenk  阅读(118)  评论(1编辑  收藏  举报