在现代软件开发和运维环境中,代码仓库已经成为团队协作和版本管理的重要基础设施。为了理解企业代码托管平台的基本原理,我在 Ubuntu 环境中部署了轻量级 Git 托管平台 Gitea,并通过 Git 命令行将本地代码成功推送到远程仓库。本文记录整个实践过程。
开始部署 Gitea(最关键步骤)
创建存储目录:
mkdir gitea
cd gitea
运行 Gitea 容器:
docker run -d \
--name gitea \
-p 3000:3000 \
-p 222:22 \
-v $(pwd)/data:/data \
gitea/gitea:latest
解释一下:
这条指令是使用 Docker 在后台启动一个 Gitea(一个轻量级的自助 Git 服务,类似私有版的 GitHub)容器。
下面是每个参数的详细拆解:
端口映射 (-p)
-p 3000:3000- 左侧 (3000):宿主机(虚拟机/服务器)的端口。
- 右侧 (3000):容器内部 Gitea Web 服务的默认端口。
- 结果:在浏览器访问
http://服务器IP:3000就能看到 Gitea 的安装界面。
-p 222:22- 注意:容器内部的 SSH 默认端口是
22。但宿主机通常已经把22端口给自己的 SSH 远程登录用了。 - 结果:这里将宿主机的
222映射到容器的22。以后你用 Git 克隆代码时,SSH 地址会类似于ssh://git@服务器IP:222/repo.git。
- 注意:容器内部的 SSH 默认端口是
数据持久化 (-v)
-v $(pwd)/data:/data$(pwd)/data:宿主机的当前工作目录下的data文件夹。:/data:映射到容器内的/data目录。- 重要性:这是最重要的部分。Gitea 的数据库、代码仓库、配置文件都存在这里。如果不加这一行,容器一旦删除,你的所有代码和账号都会消失。
镜像选择
gitea/gitea:latest- 这是官方提供的镜像。
latest表示使用最新的稳定版本。
- 这是官方提供的镜像。

一、实验环境
本次实验使用的环境如下:
| 项目 | 环境 |
|---|---|
| 操作系统 | Ubuntu 20.04 |
| 代码托管平台 | Gitea |
| 版本控制工具 | Git |
| 访问方式 | 浏览器 + 命令行 |
| 服务器地址 | 172.16.12.130 |
Gitea Web 访问地址:
http://172.16.12.130:3000
二、部署 Gitea 平台
首先在 Ubuntu 系统中部署 Gitea 服务。部署完成后,通过浏览器访问:

http://172.16.12.130:3000
进入 Gitea 的初始化配置界面。
主要配置如下:
数据库类型:
SQLite3
数据库路径:
/data/gitea/gitea.db
服务器配置:
服务器域名:172.16.12.130
HTTP端口:3000
SSH端口:22
基础URL:http://172.16.12.130:3000/
由于是实验环境,因此选择 SQLite3 作为数据库即可,无需额外安装 MySQL 或 PostgreSQL。
完成配置后点击 立即安装,系统会自动初始化 Gitea。
安装完成后即可登录系统。
三、创建代码仓库
登录 Gitea 后,点击右上角 “+” → 创建仓库。
仓库配置如下:
仓库所有者:

jhin
仓库名称:
the-first-repo-jhin
仓库可见性:
私有仓库
其余选项保持默认,不勾选初始化仓库。
创建完成后进入仓库页面,系统会提示可以通过 Git 命令行向仓库推送代码。
仓库地址为:
http://172.16.12.130:3000/jhin/the-first-repo-jhin.git
四、本地创建项目并初始化 Git
接下来在 Ubuntu 终端创建一个测试项目。
进入 Gitea 工作目录:
cd gitea
创建测试项目:
mkdir testrepo
cd testrepo
创建测试文件:
nano README.md
写入内容:
HALO GITEA
保存文件后,开始初始化 Git 仓库。
git init
该命令会在当前目录生成 .git 目录,用于保存版本控制信息,使该目录成为一个 Git 仓库。

五、添加文件并提交
首先将项目文件加入 Git 暂存区:
git add .
该命令会将当前目录中的所有文件添加到 Git 的暂存区。
然后提交到本地仓库:
git commit -m "Initial commit: My first test file"
这里 -m 参数用于添加提交说明,用来描述本次提交的内容。

六、配置 Git 用户信息
在第一次提交时出现错误:
Author identity unknown
Please tell me who you are
这是因为 Git 需要记录代码作者信息,因此需要配置用户名和邮箱。
执行:
git config --global user.name "jhin"
设置 Git 用户名。
然后设置邮箱:
git config --global user.email "jhin@test.com"
--global 表示该配置在当前系统所有 Git 仓库中生效。
配置完成后再次提交即可成功。

七、配置远程仓库
接下来需要将本地仓库与远程 Gitea 仓库建立连接。
最初配置的远程仓库地址是:
git remote set-url origin http://172.16.12.130:3000/jhin/the-first-repo-jhin.git
可以通过以下命令检查远程仓库配置:
git remote -v
输出结果:
origin http://172.16.12.130:3000/jhin/the-first-repo-jhin.git (fetch)
origin http://172.16.12.130:3000/jhin/the-first-repo-jhin.git (push)
说明远程仓库配置成功。
八、修改分支并推送代码
Git 初始化时默认分支为 master,而 Gitea 默认使用 main 作为主分支,因此需要修改本地分支名称。
git branch -M main
该命令将当前分支重命名为 main。
然后执行推送:
git push -u origin main
输入 Gitea 用户名和密码后,代码成功推送到远程仓库。
终端输出:
[new branch] main -> main
branch 'main' set up to track 'origin/main'
说明推送成功。

九、验证结果
刷新 Gitea 仓库页面,可以看到:
- README.md 文件
- 提交记录
- main 分支
文件内容如下:
HALO GITEA
说明本地代码已经成功同步到远程仓库。

十、实验总结
步骤:
- 在 Ubuntu 上部署 Gitea 服务
- 使用 Git 初始化本地仓库
- 使用
git add和git commit提交代码 - 配置 Git 用户信息
- 连接远程仓库
- 使用
git push将代码推送到远程仓库
附带一份网上收集的命令速查表,方便查略
Git 常用命令速查表
基础配置
| 命令 | 含义 |
|---|---|
git config --global user.name "name" | 设置 Git 用户名 |
git config --global user.email "email" | 设置 Git 邮箱 |
git config --list | 查看当前 Git 配置 |
说明:
用户名和邮箱会记录在每一次代码提交中。
仓库操作
| 命令 | 含义 |
|---|---|
git init | 初始化 Git 仓库 |
git clone 仓库地址 | 从远程仓库克隆项目 |
git status | 查看当前仓库状态 |
说明:git init 会创建 .git 目录,用于存储版本信息。
文件操作
| 命令 | 含义 |
|---|---|
git add 文件名 | 将文件加入暂存区 |
git add . | 将当前目录所有文件加入暂存区 |
git rm 文件名 | 删除文件并加入版本控制 |
说明:
Git 提交需要先 add → commit。
提交代码
| 命令 | 含义 |
|---|---|
git commit -m "message" | 提交代码并添加说明 |
git log | 查看提交历史 |
git log --oneline | 简洁查看提交历史 |
说明:-m 后面的内容是 提交说明。
远程仓库操作
| 命令 | 含义 |
|---|---|
git remote add origin URL | 添加远程仓库 |
git remote -v | 查看远程仓库地址 |
git remote set-url origin URL | 修改远程仓库地址 |
说明:origin 是默认远程仓库名称。
推送和拉取
| 命令 | 含义 |
|---|---|
git push origin main | 推送代码到远程仓库 |
git push -u origin main | 推送并建立分支跟踪关系 |
git pull | 从远程仓库拉取最新代码 |
说明:push = 上传代码pull = 下载代码
分支管理
| 命令 | 含义 |
|---|---|
git branch | 查看本地分支 |
git branch 分支名 | 创建新分支 |
git checkout 分支名 | 切换分支 |
git checkout -b 分支名 | 创建并切换分支 |
git branch -M main | 修改当前分支名称 |
说明:
分支用于多人开发不同功能。
代码合并
| 命令 | 含义 |
|---|---|
git merge 分支名 | 合并指定分支到当前分支 |
示例:
git merge dev
表示把 dev 分支合并到当前分支。
版本回退
| 命令 | 含义 |
|---|---|
git reset --hard 提交ID | 回退到指定版本 |
git log --oneline | 查看提交ID |
说明:
用于撤销错误提交。
开发中最常见流程:
git init
git add .
git commit -m "update code"
git remote add origin 仓库地址
git push -u origin main
流程说明:
初始化仓库 → 添加文件 → 提交代码 → 连接远程仓库 → 推送代码
Git 的核心流程其实只有三步:
修改代码 → git add → git commit → git push
Comments NOTHING