链接到服务器这些就不说了,这些都是提前配置好服务器并连接,这里用的是ubuntu做为服务器
所有的操作都是在root权限下使用
1.安装GIT,以及添加GIT管理用户账号
1.安装GIT需要的组件
- 安装 openssh,命令如下:
1
| sudo apt-get install openssh-server -y
|
- 安装完成之后,查看ssh服务是否启动,命令如下:
2.从源代码安装GIT
- 如果您确实想从源代码安装 Git,则需要具有 Git 所依赖的以下库:autotools、curl、zlib、openssl、expat 和 libiconv。
1 2
| sudo apt-get install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev \ gettext libz-dev libssl-dev -y
|
点击参考源可查看:
- 为了能够添加各种格式(doc,html,info)的文档,需要这些额外的依赖项:
1
| sudo apt-get install asciidoc xmlto docbook2x
|
点击参考源可查看:
- 如果您使用基于 Debian 的发行版(Debian / Ubuntu / Ubuntu-derivatives),您还需要以下软件包
install-info
:
1
| sudo apt-get install install-info
|
点击参考源可查看:
3.创建一个用户名,管理GIT项目
git
是用户名,可以创建自己喜欢的用户名,可以设置别的名字
4.给git用户添加文件的写权限
- 使用vim编辑
/etc/sudoers
(如果第3步设置了别的用户名,那么这里也需要设置别的用户明)
- 找到
User privilege specification
部分,添加如下内容:
如下图所示:
![ubuntu添加用户.png]()
5.安装GIT
1
| apt-get install git-core
|
6.切换至git
用户,安装git
1 2
| su git sudo apt-get install git-core
|
2.客户端生产私钥与公钥,并复制追加到Ubuntu服务器
1.生成公钥和私钥
在客户端打开git软件,然后输入如下代码,其中Usermail@mail.com
可以修改成任何值;
当同一台电脑上面有多个ssh时候,需要关注以前是否生成id_rsa
如果有生成那么建议改成用户名 + _id_rsa
格式:User_id_rsa
,防止生成ssh时候覆盖了之前的ssh
1
| ssh-keygen -t rsa -C 'Usermail@mail.com' -f ~/.ssh/User_id_rsa
|
- 同时还要在
~/.ssh
目录下新建一个 config
文件,添加如下内容(其中 Host 和 HostName 填写 git 服务器的域名,IdentityFile 指定私钥的路径)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| # gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa
# 自己服务器(如果没有给服务器设置域名的情况下) Host 192.168.183.29 ## 这里填写自己服务器IP 例如 服务器IP为: 192.168.183.29 HostName 192.168.183.29 ## 这里填写自己服务器IP 例如 服务器IP为: 192.168.183.29 PreferredAuthentications publickey IdentityFile ~/.ssh/User_id_rsa ## 这里填写上面生成的密钥
# 自己服务器有域名的情况下 Host server.xxxx.com ## 这里填写自己服务器的域名 例如 服务器域为: server.xxxx.com HostName server.xxxx.com ## 这里填写自己服务器的域名 例如 服务器域为: server.xxxx.com PreferredAuthentications publickey IdentityFile ~/.ssh/User_id_rsa ## 这里填写上面生成的密钥
|
其实设置域名和没设置域名只是方便记忆的问题,没有多大区别,别人想找你的服务器还是可以直接找到。
- 服务器设置域名,我这里是ubuntu为例,找到路径
/etc
下的hosts
文件,在箭头指定地方添加下面,其中IP修改成你服务器IP ,域名设置成你绑定的域名。
1
| 192.168.183.29 server.xxxx.com
|
![image-20240620154522860]()
2.公钥放到服务器中
- 在第一章节第3小节在ubuntu中创建了一个
git
用户,接下来进入该目录下面
1 2 3 4 5 6 7 8
| # su git
# cd /home/git
# ll
|
- 查看
git
目录下是否有.ssh
文件夹,如果没有就创建该文件夹,如果有就不用创建。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # mkdir .ssh
# sudo mkdir .ssh
# ll
# sudo chown -R $USER:$USER .ssh 如果不是在git权限下,需要使用如下命令 sudo chown -R git:git .ssh
|
效果如图所示,我这里不是创建的git
用户名,所以与上面不同,但是效果是相同的
![image-创建其他用户]()
- 进入
.ssh
,如果有authorized_kesys
文件,就不用创建,如果没有就创建authorized_kesys
;该文件主要是存放公钥文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ## 没有 authorized_kesys 就执行下面命令,有就不需要使用该命令 touch authorized_kesys
## 查看该文件是否属于你创建的用户, ll
##如果不属于就执行下面命令,属于就忽略该命令,$USER 代表着设置到当前用户管理权限下 sudo chown -R $USER:$USER authorized_kesys
如果不是在git权限下,需要使用如下命令 sudo chown -R git:git .ssh
#进入该文件 miv authorized_kesys
|
- 然后将 id_rsa.pub 里的内容添加到 authorized_kesys 文件中;可以直接复制粘贴,也可以用命令:
cat /home/git/id_rsa.pub>>/home/git/.ssh/authorized_keys
;多个密钥就挨个儿往下添加,不要覆盖
- 如果你像我一样,有多台电脑,那么创建的时候,就需要换名字,不换名字只能用完一个删一个。
3.创建GIT仓库,以及钩子函数
1.创建GIT裸仓库
- 我个人习惯性创建仓库在
/usr/local/
目录下创建仓库。该仓库位置任意放置都可以,只要自己记住,或者根据自己习惯放置,初始化裸库
pro.git
是裸仓库文件夹名称,可以自己定义任何仓库名称,后缀带上.git
- 修改裸体仓库权限,使用当前命令,是处于
git
账户下才使用该命令,如果不是请看第3。
1
| sudo chown -R $USER:$USER pro.git
|
- 如果不是出于你需要的用户权限下,使用如下命令
1
| sudo chown -R git:git pro.git
|
2.创建GIT仓库,可以看到对应的文件
创建了一个仓库,叫做pro
,该仓库把权限也像上面一样设置到 git
权限下
3.配置自己想要的钩子函数
1.自动化部署
- 如果我们想看上传到
pro.git
文件夹中的项目,那么可以在 pro.git
文件夹下找到hooks
,加入该文件夹
创建一个post-receive
文件;
- 文件内容如下,使用该代码,必须在默认分支
master
上才能执行否则需要添加其他配置
1 2 3
| #!/bin/bash unset GIT_DIR git --work-tree=/usr/local/hexoBlog/pro --git-dir=/usr/local/hexoBlog/pro.git checkout -f
|
其中--work-tree=
后面的目录就是你刚刚 git init
初始化的文件夹;
--git-dir=
后面就是你git init --bare
裸仓库的目录。
- 如果不是在默认分支
master
上,就执行如下代码
- 让该文件变为可执行文件
克隆仓库到本地,切换到master
默认分支
1. 查看分支
1 2 3 4 5 6 7 8
| git branch:这是最常用的命令,它会列出本地仓库所有的分支,当前分支会被标记出来。 git branch -r:此命令会列出所有远程分支。 git branch -a:此命令会列出所有的本地分支和远程分支。 git ls-remote --heads <仓库URL>:此命令会列出指定仓库的所有远程分支。需要将<仓库URL>替换为实际的仓库URL。 git show-ref:此命令会显示所有本地分支和它们的对应引用(commit SHA)。 git log --branches:此命令会显示所有分支的提交历史。 git branch --contains <commit>:此命令会列出包含指定提交的所有分支。需要将<commit>替换为实际的提交哈希值。 需要注意的是,在远程分支被删除后,它们可能仍然存在于本地的缓存中,可以使用git remote update origin --prune来清理本地缓存并同步远程分支列表。
|
2.创建master
分支,并切换到master
分支
文章参考:
1.服务器上的 Git - 设置服务器
2.Ubuntu20.4搭建git服务器
3.利用GIT钩子函数实现自动部署或其他操作
4.了解git裸仓库并利用post-receive自动化部署
5.利用GIT钩子函数实现自动部署或其他操作