git 服务器

使用 git 在服务器上创建仓库,用于上传存储代码文件,将所有的项目内容都存放在自己的服务器中,可确保数据的保密性和安全性

创建 git 服务器的方式有两种,可以通过以下命令初始化仓库

  • git init:正常初始化仓库,类似与我们看到的 github 上的样子,可以看到我们提交的文件内容
  • git init –bare:初始化一个裸仓库,只能看到项目的版本信息,不能看到项目文件

1、git init

初始化仓库

mkdir -p /home/git/init
cd /home/git/init
git init

image-20220728213942046

修改配置文件

1、修改 config 配置文件

cd .git
vim config

# 添加上如下内容
[receive]
denyCurrentBranch = ignore

2、进入 hooks 文件夹,新增 post-receive 文件

cd hooks
vim post-receive

# 增加如下内容
#!/bin/sh
unset GIT_DIR
cd ..
git checkout -f

保存退出后,需要赋予权限

chmod +x post-receive

本地拉去项目测试

1、在本地新建文件夹,进行项目拉取

git clone root@[ip]:/home/git/init test1

image-20220728214758885

2、创建文件并提交测试

image-20220728214930957

git add .
git commit -m "test"
git push

image-20220728215005801

3、在服务器上查看

cd /home/git/init
ll -a

image-20220728215306125

注意:发现在服务器上对项目文件进行操作并不会有效果,即使删除了文件,在本地拉取项目任然不变,而在服务器上只要执行 git checkout -f 即可更新项目内容

image-20220728215525522

同理,如果发现服务器上的内容没更新时,只需执行如下代码即可更新

git checkout -f

2、git init –bare

创建裸仓库,用于做为git服务端共享仓库

初始化仓库

mkdir -p /home/git/bare.git
cd /home/git/bare.git

image-20220728215853590

创建同步项目的文件

因为使用 bare 创建的是裸仓库,不能存放项目文件,所以我们可以在服务器上创建一个文件夹,同来实时拉取项目内容(与本地拉取一样,只不过会实时进行)

cd /home/git

# 克隆项目
git clone root@119.23.209.205:/home/git/bare.git bare

image-20220728224744358

修改配置文件

cd /home/git/bare.git/hooks
vim post-receive

# 添加如下内容并保存
#!/bin/bash
cd /home/git/bare
env -i git pull

进行授权

chmod +x post-receive

拉取项目测试

git clone root@[ip]:/home/git/bare test2

image-20220728221138730

新建文件上传测试

image-20220728221255579

查看服务器

# 查看 bare 裸仓库
cd /home/git/bare.git
ll -a

因为这是这个裸仓库,所以我们只能看到更新的版本信息,但却没有具体项目内容

image-20220728221745980

# 查看同步目录
cd /home/git/bare
ll -a

image-20220728221336642

此时在我们配置的同步项目文件中可以看到刚才提交的内容,因为我们每一次 push 到服务器的时候,都会自动执行 post-receive 文件,为此目录自动拉取代码

与本地目录一样,也可以在这里进行相应的 git 操作

3、配置 ssh 公钥