裸仓库Git 服务器搭建实操

张开发
2026/4/10 8:15:15 15 分钟阅读

分享文章

裸仓库Git 服务器搭建实操
裸仓库Git 服务器搭建实操现代各种软件版本开发迭代块软件版本控制管理已成为开发过程中非常重要的环节目前Git 已经成为最流行的版本控制系统之一。虽然 GitHub、Gitee、GitLab 等公共服务提供了方便的托管平台但有时候由于安全性、隐私或其他定制化需求我们需要搭建自己的 Git 服务器。一般根据开发团队规模搭建自己的 Git 服务器也有不同的选择一般情况下可搭建git裸仓库或者租用Gitea、GitLab资源搭建。对应各种选择对应场景和资源需求大体如下方案适用场景优势资源需求裸仓库小型团队10人零依赖、快速部署最低Gitea轻量级需求低资源占用、Docker友好1核2GGitLab中大型企业完整CI/CD、权限管理体系4核8G本文采用裸仓库方案从头到尾逐步介绍git服务器的搭建服务端为Ubuntu20.04。注裸仓库bare repository指的是没有工作目录的仓库。通常一个Git仓库由两部分组成一个工作目录包含项目的实际文件和一个隐藏的.git目录后者包含了所有版本控制的信息例如提交历史、分支信息等。裸仓库不包含工作目录只包含.git目录这使得它更适合作为共享仓库来使用。安装git# Ubuntu系统安装Gitsudoaptupdatesudoaptinstallgit创建用户及仓库# 创建专用Git用户sudouseradd-mgit#-m 为创建用户目录此时为 /home/gitsudopasswdgit# 可选设置密码# 创建仓库目录并设置权限sudomkdir-p/home/git/repossudochowngit:git /home/git/repos切换用户并对裸仓库初始化# 切换用户并初始化裸仓库# - 让git的登录环境完全加载‌# 切换到该用户的家目录如 /home/git# 加载该用户的 Shell 配置文件如 .bashrc、.profile 等# 设置该用户的环境变量如 HOME、USER、LOGNAME、PATH 等sudosu-gitcd/home/git/repos# --bare 创建裸仓库# 若为加此参数会创建一个包含工作区的普通仓库其它用户push 时会报错gitinit--baremyproject.git客户端登录的SSH免密配置先在客户端生成密钥对具体密钥类型按自己选择此处采用rsa。此处客户端采用windows在windows的cmd里输入# -C 后为密钥的注释一般和客户端的git配置的邮箱/用户名一致ssh-keygen-trsa-Cyour_emailexample.com对应密钥的文件名可以修改同时可以设置访问密码在上图红框中输入。按照提示确认最终生成密钥对一般存储在路径C:\Users\Administrator.ssh文件夹下其中.pub为公钥文件需要放到服务器端的授权文件里。服务端密钥配置将客户端生成的密钥对中的公钥文件传送到服务器并将公钥文件内容放入到授权文件中。sudosu-gitmkdir-p~/.sshchmod700~/.sshtouch~/.ssh/authorized_keyschmod600~/.ssh/authorized_keys# 将公钥文件放到此目录下将客户端公钥内容追加到文件catid_rsa.pubauthorized_keys服务端验证在windows客户端的cmd界面输入ssh-Tgit服务器IP# 在cmd界面中应该有欢迎信息打印git服务器管理验证首先将本地仓库和远程仓库服务器关联添加远程仓库地址。在windows上的git客户端可以直接下载此处下载版本为Git-2.30.2-64-bit.exe安装。然后启动git的命令界面输入以下命令添加远程仓库。# 在本地工程目录下执行gitremoteaddorigin git服务器IP:/home/git/repos/myproject.git如果已经关联过可以查看当前远程仓库配置gitremote-v将仓库克隆到本地在工程中增加任意文件如test.txt再推送到服务器# 假设本地分支为 mastergitpush-uorigin master 后续推送可以直接使用gitpush服务端查看仓库文件需要注意建立的仓库为裸仓库时不包含工作区故直接进入工作目录是看不到推送的文件的。此时可以用 git show 查看特定文件内容。cd/home/git/repos/myproject.git# 查看某个分支的根目录文件列表gitls-tree master# 查看某个具体文件的内容例如 README.mdgitshow master:test.txt# 查看某个子目录下的文件假定推送了src/main.py文件gitls-tree master:src/gitshow master:src/main.py也可以再服务端克隆一份临时工作区此方式最直观如 /tmpcd/tmp# git clone 后面直接跟裸仓库的本地路径不需要 SSH 或 IP。这样会得到一个完整的工作区副本gitclone /home/git/repos/myproject.git myproject-tempcdmyproject-templs-lcattest.txt# 查看完毕后删除临时目录cd/rm-rf/tmp/myproject-temp至此小规模的GIT服务器搭建及测试过程结束。

更多文章