Yehnn / seed_lab

一些实验
Other
12 stars 12 forks source link

部署 git 服务器 #32

Open Yehnn opened 6 years ago

Yehnn commented 6 years ago

⭐ 用 docker 模拟一台服务器和客户端,一台搭建 git 服务器,一台当作本地客户端使用。

⭐⭐ 部署负载均衡的服务器

⭐⭐⭐ 远程端的网页版

Yehnn commented 6 years ago

关于从本地 push 到远程端没在远程端发现 push 的文件的原因。

解答1.💡

如果你是用 git init --bare mygit.git 建立的仓库. 该仓库是没有工作目录的.但问题中你说找不到工作目录.说明远程服务可能是部署工作,需要包含工作目录. 建立方法如下.

创建支持工作目录的远程仓库

# 远程服务器初始化仓库
git init <仓库名>
# 设置允许远程接收文件
git config receive.denyCurrentBranch ignore
在远程仓库,post-receive 钩子文件中添加自动更新工作目录内容

WORK_TREE='../'
git  --work-tree="${WORK_TREE}" reset --hard
确保 post-receive 具有执行权限

以上就实现了一个最简单的建立具有工作目录的远程 git 仓库功能.

可以直接编写一个 shell 脚本,封装上述逻辑即可,方便后续操作

解答2.💡

git服务器上那个目录 project001.git 这只是一个仓库. 你需要找个目录克隆出来, 才会显示你push上去的内容的.

比如:

git clone project001.git pj001
cd pj001
git checkout master

就会显示出来.

谨记, 这只是一个仓库, 不是文件系统.

我看了下只有这个答案是对的,其余几个都是瞎扯,根本不看输出系列。补充一下,服务器端存放的叫> 裸库(bare),你可以认为就是你的仓库的.git/目录下面的那些东西,不包含工作区(working space)。直接> git clone --bare也可以直接拿到裸库做服务端,从裸库还原出工作区只需要git clone一次即可。

参考链接