部署gitea的原因
使用gitea的原因:本质上是因为在本地硬盘上每次学习一些新知识,于是创建一些demo性质的应用。特别是vue,react之类的前端应用。每个项目都会有node_module
这个文件夹,这里面有特别多的4k小文件,这导致我备份硬盘数据时。速率总是被压的很低。所以我在想能不能通过一个本地部署的类似github的服务器,实现我对这些项目的备份,然后通过配置.gitignore
忽略掉哪些中间过程文件和复杂的库文件。来实现对磁盘的高效率备份。
部署完gitea后,发现他其实可以很好的替代github,gitee来作为我自己的代码仓库使用。而且他也确实有很多优点,包括如下图片等功能。而且他作为本地化服务,我不需要担心网络故障,权限校验等问题。
部署过程
这部分内容主要参考大佬文章以及gitea官网
我只说明我需要使用的docker compose
部署的内容
首先配置一个docker-compose.yml
,其内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| version: "3"
networks: gitea: external: false
services: server: image: gitea/gitea:1.21.1 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=db:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea - SSH_PORT=20022 - SSH_LISTEN_PORT=22 - APP_NAME="这里是标题" - GITEA__log__MODE=file - GITEA__log__ROOT_PATH=/data/gitea/log - GITEA__log__LEVEL=Debug - GITEA__log__FILE_NAME=gitea.log - GITEA__log__MAX_DAYS=7 - GITEA__log__MAX_SIZE_SHIFT=23 restart: always networks: - gitea - nginx_container volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "30000:3000" - "20022:22" depends_on: - db db: image: mysql:8.0 restart: always environment: - MYSQL_ROOT_PASSWORD=gitea - MYSQL_USER=gitea - MYSQL_PASSWORD=gitea - MYSQL_DATABASE=gitea networks: - gitea command: - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8 - --collation-server=utf8_bin volumes: - ./mysql:/var/lib/mysql
|
以上是一些最基础的配置,而关于具体的环境变量等一些选项,请详看关于原作者的解释,那里更加详细。我只谈我使用到的部分:
1 2 3 4 5 6
| - GITEA__repository__ENABLE_PUSH_CREATE_USER=TRUE
- GITEA__service__DISABLE_REGISTRATION=TRUE
- ROOT_URL="https://gitea.zfxt.top/"
|
这个内容直接在上面docker-compose.yml
中配置在enviroment中即可。这些操作,确保了这个git服务只为我自己服务,不允许注册给其他人,我也可以直接推送来完成仓库的创建,做到全命令行操作。
然后运行docker compose up -d
即可运行。然后访问对应的网站,完成初始化配置。不知道的话,一路默认下去就好。然后你就可以享受gitea了。
日常使用
当我创建了一个项目,并且使用git init
完成本地仓库初始化后,我们就可以把这个仓库推送到我们的gitea中。
添加远程仓库
1 2
| git remote add gitea https://gitea.zfxt.top/{用户名}/{自定义仓库名}.git # gitea是自己任意起的名字,一般默认设置为origin # 使用git remote -v 查看是否添加成功
|
类似这样子的样式
推送并自动创建仓库
随意编写几个测试文件
1 2 3 4
| git add . git commit -m "test" git push -u gitea main # 注意,这里的远程分支要与本地分支同名:可能是master或者是main # 他推送上去后,会自动创建该仓库,我们就不需要图形化界面点击了
|
使用ai的解释如下
之后你默认的git push pull
命令都会默认从gitea这个远程分支拉去。同样的,如果你有多个远程仓库分别在github,gitee上,你可以分别使用类似于git push github
,git push gitee
等方式完成推送
以上