· 技术教程 · 8 min read
Gitea 全方位使用与双仓库同步推送教程
本教程涵盖Gitea从入门到精通的完整流程,包括基础使用、SSH配置、双仓库推送设置,以及实现一键同步推送到GitHub和Gitea的高级技巧。

前言
本教程假设你已经成功在自己的服务器上安装并运行了 Gitea。我们将分为三个部分:
- Gitea 基础使用:涵盖从创建仓库到日常代码管理的完整流程
- 配置双仓库推送:教你如何将一个本地项目同时关联到 Gitea 和 GitHub
- 实现一键同步:通过修改 Git 配置,实现
git push
命令同时推送到两个平台
第一部分:Gitea 基础使用入门
1. 首次登录与配置 SSH 密钥
这是连接你本地电脑和 Gitea 服务器的”钥匙”。
登录 Gitea: 用浏览器访问 http://YOUR_SERVER_IP:3000
并登录。
获取本地公钥: 在你的本地电脑终端上,运行以下命令并复制整行输出内容:
cat ~/.ssh/id_ed25519.pub
# 或者
cat ~/.ssh/id_rsa.pub
在 Gitea 中添加公钥:
- 在 Gitea 网页右上角,点击你的头像 → “设置”
- 在左侧菜单选择 “SSH / GPG 密钥”
- 点击 “增加密钥”,将复制的公钥粘贴进去,起个名字(如 “My MacBook”),然后保存
2. 创建你的第一个 Gitea 仓库
- 在 Gitea 首页,点击右上角的 + 号 → “新建仓库”
- 仓库所有者:选择你自己
- 仓库名称:填写项目名称,如
my-first-gitea-project
- 可见性:选择”私有”或”公开”
- 初始化仓库:建议勾选此项,并选择一个
.gitignore
模板(如 Node 或 Python)和许可证(如 MIT) - 点击”创建仓库”
3. 克隆仓库到本地并进行第一次提交
复制 SSH 克隆地址: 在新建的 Gitea 仓库页面,找到并复制 SSH 克隆地址,它看起来像:
ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-first-gitea-project.git
克隆并提交:
# 克隆仓库
git clone ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-first-gitea-project.git
# 进入项目目录
cd my-first-gitea-project
# 进行修改并提交
echo "Hello Gitea" > README.md
git add .
git commit -m "My first commit to Gitea"
git push
刷新 Gitea 页面,你会看到新的提交已经同步上去了。
至此,你已经掌握了 Gitea 最核心的日常使用方法!
第二部分:配置双仓库推送
现在,我们来处理一个已经存在的、之前推送到 GitHub 的本地项目,让它也能推送到 Gitea。
1. 准备工作
- 本地项目:假设你本地已经有一个项目
my-existing-project
,它之前只关联了 GitHub - Gitea:在 Gitea 网站上创建一个新的空仓库,不要勾选”初始化仓库”。仓库名最好与本地项目一致
- GitHub:你的项目在 GitHub 上已经存在
2. 添加 Gitea 为新的远程仓库
进入你本地的 my-existing-project
项目目录:
# 查看当前的远程仓库
git remote -v
你会看到 origin
指向 GitHub。
从 Gitea 复制你新建的空仓库的 SSH 地址,然后添加一个新的远程仓库:
# 语法: git remote add <新别名> <Gitea仓库SSH地址>
git remote add gitea ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-existing-project.git
再次用 git remote -v
检查,你会发现 origin
(GitHub) 和 gitea
(Gitea) 已经并存了。
3. 推送代码到 Gitea
现在,我们将本地的所有代码历史一次性推送到 Gitea:
# --all 推送所有分支
git push --all gitea
# --tags 推送所有标签
git push --tags gitea
完成后,Gitea 上的仓库就和你的本地项目以及 GitHub 上的内容完全一致了。
4. 日常双仓库推送
现在,当你有了新的提交后,需要手动推送到两个远程仓库:
# 推送到 GitHub
git push origin main
# 推送到 Gitea
git push gitea main
虽然可行,但这有点繁琐。接下来,我们实现一键搞定。
第三部分:实现一键同步推送
我们将通过修改 Git 的 remote 配置,让一个别名(比如 origin
)同时指向两个 URL。
方法一:修改 origin,让它同时指向 Gitea 和 GitHub
这是最推荐的方法,因为 origin
是最常用的别名。
步骤:
进入你的本地项目目录
首先,确保
origin
已经指向了你的主仓库(比如 GitHub):git remote set-url origin https://github.com/your-github-username/my-existing-project.git
然后,添加 Gitea 的 URL 到
origin
的推送目标中:# 语法: git remote set-url --add --push origin <要添加的URL> git remote set-url --add --push origin ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-existing-project.git
--push
参数意味着这个 URL 只在 push 时生效,pull 和 fetch 仍只从第一个 URL 获取。验证配置: 查看
.git/config
文件,或者用git remote -v
。你会看到 push URL 有两个,而 fetch 只有一个:origin https://github.com/your-github-username/my-existing-project.git (fetch) origin https://github.com/your-github-username/my-existing-project.git (push) origin ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-existing-project.git (push)
一键推送! 现在,当你进行本地提交后,只需执行一次我们最熟悉的命令:
git push origin main
Git 会自动将你的提交依次推送到 GitHub 和 Gitea!
方法二:创建一个新的”全能”远程别名
如果你不想修改 origin
,可以创建一个新的别名,比如 all
,让它指向两个仓库。
步骤:
首先添加
github
和gitea
两个独立的远程仓库(如果还没加的话):git remote add github https://github.com/your-github-username/my-existing-project.git git remote add gitea ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-existing-project.git
手动编辑配置文件
.git/config
:nano .git/config
在文件末尾添加以下内容:
[remote "all"] url = https://github.com/your-github-username/my-existing-project.git url = ssh://git@YOUR_SERVER_IP:222/your_gitea_username/my-existing-project.git
保存文件。现在,你可以使用
all
这个别名来一键推送了:git push all main
总结
通过本教程,你已经掌握了:
- Gitea 基础操作:从创建仓库到日常代码管理
- 双仓库配置:同时关联 GitHub 和 Gitea
- 一键同步推送:通过巧妙的 Git 配置实现效率提升
这种双仓库策略特别适合:
- 需要代码备份的开发者
- 希望同时利用不同平台特性的团队
- 从 GitHub 迁移到自建 Gitea 的过渡期
掌握这些技巧,你就能在代码管理上更加得心应手,既享受自建服务的隐私和控制权,又不失去主流平台的便利性。