感谢 TurboAI对本博客的的大力赞助。 创作不易,如果您觉得有帮助,请 支持LIncol29! 为了让我能够继续创作更好的内容,你也可以选择订阅博客的 VIP ,包年VIP仅需10元/年,所有VIP内容免费观看
日志
- 2024/10/05:更新 git 如何上传代码仓库至 gitea
前言
一般写代码大家都习惯上传至 GitHub、Gitee 这些平台。不过有时候可能一些私密代码不方便上传这些公开平台,并且上传至公开平台的文件已经不是你的了。你无法掌握所有权。类似网盘资源和谐,有可能你的代码也被 和谐 了。
这时候 lincol29 想到需要自建一个可以管理代码版本的平台。Google 以后发现有三款产品符合我的需求。GitLab、Gitea、Gogs。
- GitLab:完整的 git 集成环境,包含 npm,nuget,docker registry 等私有集成,还有完整的 CI/CD,k8s 集成方案。为了实现这些功能,GitLab 变得非常臃肿,docker 镜像就有 1 个多 G,对服务器性能要求比较严格。最低要求是 2c4g 的服务器。
- Gitea:gitea 只是 git 的操作库,实现搭配了基础 wiki 这些功能,需要配合其他第三方库或工具才能提供更专业的支持。比如 cicd 要 drone。并且 Gitea 非常轻量,使用 docker 搭建只需要 200-300M 内存,让小服务器也可以运行。
- Gogs:摘自 bing ——Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
准备工作
- docker 容器
- docker-compose
- 服务器 or NAS
- 域名
群晖NAS使用docker容器部署Gitea
拉取gitea镜像
进入群晖 NAS 终端,拉取 gitea 的 docker 镜像。如果你无法使用代理,请查看
使用 Cloudflare 搭建 Docker Hub 镜像代理——实现国内访问docker
- 拉取镜像
docker pull gitea/gitea:latest 1.22.2
- 使用群晖 NAS 的注册表拉取镜像,如果实在无法拉取,可以邮件或者评论区留言联系我,我会给你发镜像包。
启动gitea容器
- 从群晖 nas 中启动
- 编辑容器名称,选择自动启动
- 链接数据库容器,这里我选择的是 MySQL
- 选择端口,可以自定义。容器端口 3000 对应的是网页的端口
- 添加文件夹,这是容器的持久化映射目录
服务器使用docker-compose部署Gitea
- 登录服务器,指定工作目录。(自行选择工作目录,放在你自己想要的位置)
work=/wwwroot/docker/gitea && mkdir -p $work && cd $work
- 放行端口 3000 (以 3000 为例。等下会用到,你也可以自定义未使用的端口)
配置 Yaml
在 $work 目录下,也就是 /wwwroot/docker/gitea 这个目录中
- 创建 yaml 文件。
vim docker-compose.yaml
docker-compose.yml 文件
version: "2"
services:
server:
image: gitea/gitea:latest #目前最新版本为1.22.2
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
ports:
- "3000:3000"
- "2222:2222"
查看端口是否被占用(以 3000 为例),输入:
lsof -i:3000 #查看 3000 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用,我们可以继续下面的操作了~
如果出现:代表没有安装 lsof
-bash: lsof: command not found
运行:
apt install lsof #安装 lsof
上线服务
- 上线服务:
cd $work && docker-compose up -d
这时可以使用 ip + 端口访问
使用Gitea
首次进入 Gitea 需要进行初始化配置,这个过程会有点慢,耐心等待即可。
初始配置Gitea
- 填写数据库类型 – MySQL
- 数据库主机 – IP 加端口
- 数据库的用户名和密码
- 数据库名称 – gitea
这时候初始配置成功了,可以自己尝试使用 gitea 去上传代码吧
上传代码仓库到Gitea
1、创建仓库
2、复制项目的HTTP地址,点击右边红色圆圈圈住的两个小方块即可复制
3、安装Git
安装Git的步骤省略,自行下载即可。git官方下载地址
选择操作系统对应版本下载
4、Git 指令
git init
git add . `中间有个空格`
git commit -m "注释" ` "" 里面为注释内容,自行填写。忽空白`
git remote add origin git地址 `origin是自己命名`
git pull --rebase origin main `master/main 是分支`
git push -u origin main
git push -f origin main `强制推送`
报错解决
身份验证失败
上传代码时报:Authentication failed for xxx 网站
推送分支失败
git创建的为 master 分支
gitea创建仓库分支默认为 main 分支
推送分支失败。本地仓库和远程仓库分支名称不一致。
检查你当前所在的分支。
git branch
1、如果远程分支名为 main
,你可以推送到远程的 main
分支:
git push -u origin master:main
2、修改名称为 main,然后重新上传
git branch -m master main
解决根本原因
从 2020 年 10 月 1 日开始,GitHub上的所有新库都将用中性词「main」命名,取代原来的「master」,因为后者是一个容易让人联想到奴隶制的术语。
将Git、gitea的分支都默认设置为 main 即可
git config --global init.defaultBranch main
参考文档
What is Gitea? | Gitea Documentation : Gitea 的官方文档,如有不懂可自行翻阅。
https://github.com/go-gitea/gitea : gitea 在 githup 的开源地址
早早都用上啦,gitea功能比其他的都要好一些,最喜欢的就是它的镜像功能,像其他只能同步,不支持后续自动更新。
确实,目前使用起来感觉挺好的。如果有条件可以尝试一下gitlab。
怎么感觉和GitHub、Gitee换汤不换药呢😂
区别就是前言中说的,github和gitee是公开平台,gitea是自己部署的。现在更喜欢资料掌握在自己手中😂
是的 当然是自己的东西自己保存最好了
这个很需要呀。工作代码直接自部署了。
你好,可以发一个gittea最新稳定版的docker镜像,带标签的一个给我吗?多谢了