git同步上游仓merge版
更新: 2/28/2026 字数: 0 字 时长: 0 分钟
前置条件
确认已配置 upstream remote(只需做一次):
bash
# 查看当前 remote
git remote -v
# 如果没有 upstream,添加它
git remote add upstream https://github.com/原作者/上游仓库.git标准同步流程
bash
# 1. 拉取上游最新代码(不会修改本地文件)
git fetch upstream
# 2. 查看上游有哪些新提交(可选,了解更新内容)
git log HEAD..upstream/master --oneline
# 3. 合并上游更新到本地
git merge upstream/master --no-edit
# 4. 推送到你的 fork
git push origin master遇到冲突怎么办?
建议
冲突 = 你和上游同时修改了同一段代码。Git 不知道该保留谁的,需要你手动决定。
判断原则
| 场景 | 策略 | 命令 |
|---|---|---|
| 这段代码你有自定义逻辑 | 保留你的(ours) | git checkout --ours <文件> |
| 你没改过,只是上游重构了 | 接受上游(theirs) | git checkout --theirs <文件> |
| 两边都有价值 | 手动编辑合并 | 编辑器里删除冲突标记 |
冲突标记说明
diff
<<<<<<< HEAD
你的本地代码(current)
=======
上游的代码(incoming)
>>>>>>> upstream/master解决后提交
bash
# 标记冲突已解决
git add <冲突文件1> <冲突文件2>
# 完成合并提交
git commit --no-edit
# 推送
git push origin master⚠️ 常见坑点
1. 上游重命名了文件
本次实际遇到:mltb_client.py → telegram_manager.py
症状:合并后运行报 ModuleNotFoundError原因:你本地修改过的文件仍然 import 旧模块名 修复:全局搜索旧名称,替换为新名称
bash
grep -r "mltb_client" bot/ # 找到残留引用
# 手动修改 import 路径2. Docker 部署项目记得重新构建
bash
docker compose down
docker compose up -d --build
docker compose logs --tail=30 # 检查启动日志一键脚本(进阶)
如果你经常同步,可以用这个一把梭:
bash
#!/bin/bash
set -e
echo "📡 Fetching upstream..."
git fetch upstream
echo "🔀 Merging..."
if git merge upstream/master --no-edit; then
echo "✅ Merge successful, pushing..."
git push origin master
echo "🎉 Done!"
else
echo "⚠️ Conflicts detected! Resolve manually."
git diff --name-only --diff-filter=U
fi