基于已搭建的 Gitea+MySQL 环境,从 “小试牛刀” 推送文件开始,讲解 Web 端修改 → 本地拉取、本地修改 → 云端同步、历史版本恢复。
声明
本文涉及远程访问与代码推送功能,请确保你对所使用的 NAS、域名、SSH 端口、访问权限拥有合法使用权限。操作前建议备份数据。
小试牛刀
已经在仓库里面新建了(web端新建)
现在去gitea的web端口,设置好基础信息之后,创建一个仓库,假设你的gitea的管理员账户名为yourname,假设仓库名字为daily,在本地机,执行以下命令:
git clone gitea:yourname/daily.git 其中,这个 gitea表示的是你在本地 ~/.ssh/config 对应于连接容器gitea的别名, yourname表示的是gitea的账户名, daily.git表示的是仓库的链接,可以在web网页端查看。执行命令之后就可以看到拉取到本地的仓库的文件了。
进入项目并开发
现在去gitea的web端口,设置好基础信息之后,创建一个仓库,假设仓库名字为daily,
cd daily
git branch -a # 查看当前所有分支
git branch equipment # 可选 创建名为 equipment 的新分支
# 切换到该分支
git switch equipment # 或者老写法: git checkout equipment
# 一步完成创建 + 切换
git switch -c equipment
# 添加文件之后
git add . # 添加全部文件
git commit-m"添加设备信息" # 添加备注
git push -u origin equipment # 推送到分支 现在去gitea的web管理页面,就可以看到新建的分支以及添加的内容啦!
本地初始化项目并推送
现在去gitea的web端口,设置好基础信息之后,创建一个仓库,假设仓库名字为daily
# 新建本地目录 & 初始化
mkdir -p ~/daily && cd ~/daily
git init -b main # 初始化为 main 分支
git config user.name "yourname" # 若全局已配可跳过
git config user.email "you@example.com"
# 添加示例文件
echo "# Daily" > README.md
echo ".DS_Store" >> .gitignore # 随手加个忽略示例(按需)
git add .
git commit -m "chore: init project"
# 绑定远端(或者内网ip)
git remote add origin gitea:yourname/daily.git
# 首次推送并建立跟踪
git push -u origin main 远程和内网切换
可以在仓库里随时切换远端(内网和远程,在config里面的别名进行区分):
git remote set-url origin gitea_frp:yourname/daily.git # 远程
# 或
git remote set-url origin gitea:yourname/daily.git # 内网 日常开发:新建/切换分支、提交、推送、拉取
# 新建并切到功能分支
git switch -c exp1
# 修改/新增文件
echo "Add an experiment note." >> README.md
mkdir notes && echo "2025-11-09: init exp" > notes/exp1.md
git add .
git commit -m "feat(exp1): add first experiment notes"
# 推送该分支到远端
git push -u origin exp1
# 日常同步:拉取远端更新(保持分支最新)
git pull --ff-only # 当前分支有上游跟踪时,用快进更新
# 切回 main 并合并(本地合并示例;也可在 Gitea 上走 Pull Request)
git switch main
git fetch origin
git merge --no-ff origin exp1 -m "merge: exp1 into main"
git push
# 查看远端地址
git remote -v
# 查看分支与跟踪关系
git branch -vv
# 把远端所有分支取回但不合并
git fetch --all --prune
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看本地 + 远程所有分支
git branch -a
# 删除本地分支
git branch -d branch_name
# 若分支未合并强制删除:
git branch -D branch_name
# 删除远程分支
git push origin --delete branch_name
# 快速创建跟踪远端分支的本地分支
git switch -c exp2 origin exp2
# 撤销最近一次提交但保留工作区修改
git reset --soft HEAD~1
# 撤销提交并取消暂存(但保留文件改动)
git reset --mixed HEAD~1
# 撤销文件到上次提交版本
git checkout -- path/to/file 在克隆 Gitea 仓库时,如果只想获取其中一个分支
# 使用 --branch 和 --single-branch 参数,例如:
git clone --branch equipment --single-branch gitea:yourname/daily.git
# 含义:
# --branch equipment:只拉取名为 equipment 的分支;
# --single-branch:不拉取其他分支;
# 这样下载的内容最少,适合仓库很大时。
# 已有仓库后再拉取指定分支
# 进入仓库目录
cd daily
# 获取远程分支信息
git fetch origin equipment:equipment
# 切换到该分支
git checkout equipment
从 Web 端修改 → 本地拉取(云端修改,本地拉取)
假设你在 Gitea 的 Web 界面中或者其他人/设备对项目文件进行了编辑保存。现在,你需要把该变更拉取到本地仓库。操作步骤如下:
# 切换到本地项目目录:
cd /path/to/your/local/repo
# 确保当前在 equipment 分支(或你所用的分支):
git checkout equipment
# 拉取远端变更:
git pull origin equipment # 或者 git pull --ff-only
# 若有提示“fast-forward”或“Already up to date”,说明变更已同步。
# 在本地你可再次编辑、提交、推送:
git add .
git commit -m "同步 Web 端修改"
git push origin equipment 本地修改 ↔ 云端修改 → 冲突同步
如果你在本地修改了同一个文件,同时 Web 端也被改动了,就会出现冲突。以下为完整同步方案:
查看本地和远程仓库是否同步
# 最常用:git fetch + git status,git fetch 只会更新远程分支引用,不会改动你的本地代码。
git fetch # 更新远程跟踪分支
git status
# 用 git log 对比差异
git log --oneline --decorate --graph origin/main..main # 如果没有输出,说明没有差异。
# 最强方式:检查 ahead/behind 数量
# 左边的数字表示远程领先本地的提交数量
# 右边的数字表示本地领先远程的提交数量
git fetch # 更新远程跟踪分支
git rev-list --left-right --count origin/main...main # 主分支
git rev-list --left-right --count origin/name...name # 比较任意两个分支
你本地修改,在云端尚无变更
git add .
git commit -m "本地修改"
git push origin equipment 你本地修改,同时远端也修改了
# 在推送前,先执行 git pull origin equipment:
git pull origin equipment
# 若你希望放弃本地改动,强制使用远端版本:
git fetch origin
git reset --hard origin/equipment
# 若希望保留本地修改覆写远端:
git push -f origin equipment
# 注意: 强制推送可能覆盖远端历史,应谨慎使用。
# 保留分叉点(merge,更稳、无改写历史)
git fetch origin
git merge origin/equipment # 产生一个 merge commit 把双方改动合在一起
git push 恢复历史版本操作
在版本控制中,恢复历史版本是常用操作。操作如下:
# 查看提交历史:
git log
# 或以简洁格式:
git log --oneline
# 假设你想回退到提交 abcd1234,可采取以下方式:
# 方式1:创建一个新的分支
git checkout -b rollback-to-abcd1234 abcd1234
# 方式2:重置当前分支(谨慎操作)
git reset --hard abcd1234
git push -f origin equipment
# 若只是想恢复某个文件到旧版本:
git checkout abcd1234 -- path/to/file
git commit -m "恢复文件至提交 abcd1234 版本"
git push origin equipment 总结与最佳实践
你现在已掌握:
在 Gitea+MySQL 环境中:推送、拉取、同步、冲突处理、历史版本恢复。
访问 Web 界面与 SSH 推送代码。
实践中建议采用以下最佳实践:
经常执行
git pull保持本地同步;遇到冲突时先解决后再推送;
保留良好的提交规范与注释;
使用 HTTPS + SSH 双通道保护;
备份 MySQL 数据库与 Gitea 仓库数据;
若需要大规模协作,可考虑分支策略(如 feature/, develop 等)。
祝你的 Gitea 服务运行顺利,代码协作高效!

