基于开源项目开发公司项目,如何同步开源仓库的最新更新(以vben为例)

本篇文章介绍完整的同步流程,如果你的项目当时已经把.git文件删了,那么建议你完成下述前置步骤后手动迁移。

前置条件:设置origin为团队仓库地址、设置upstream为vben开源仓库地址:

设置origin为团队仓库地址:

git remote set-url xxx

设置upstream(上游仓库地址)为vben开源仓库地址:

git remote add upstream https://github.com/vbenjs/vue-vben-admin.git

✅ 方案一: merge (推荐)

适用于多人协作,安全,但是 git log --graph 分叉多不整洁

bash 复制代码
# 1. 拉取 upstream 最新代码
git fetch upstream

# 2. 切换到本地 main,确保是最新
git checkout main
git pull origin main

# 3. 新建临时分支(比如 sync-upstream)
git checkout -b sync-upstream

# 4. 在临时分支上合并 upstream/main
git merge upstream/main

# 5. 解决冲突,确认代码无误后提交

# 6. 切回 main 分支
git checkout main

# 7. 将临时分支变更合并到 main
git merge sync-upstream

# 8. 推送 main 到远程
git push origin main

# 9. (可选)删除临时分支
git branch -d sync-upstream

🚫 方案二: rebase (不推荐)

rebase适合在个人分支整理提交历史、保持线性清晰时使用,优点是提交历史干净整洁,缺点是会改写历史,强制推送可能导致团队协作冲突。

bash 复制代码
# 1. 拉取上游仓库最新代码到本地(fetch 不会自动合并)
git fetch upstream

# 2. 切换到自己的 main 分支
git checkout main

# 3. 确保本地 main 是最新的(拉取自己远程 origin)
git pull origin main

# 4. 基于 upstream/main 执行 rebase
git rebase upstream/main

# 5. 解决冲突(如果有),按照提示编辑冲突文件后
git add <冲突解决的文件>
git rebase --continue

# 6. 完成后强制推送到自己远程仓库(因为提交历史被改写)
git push origin main --force-with-lease

✅ 方案三:cherry-pick (推荐)

git cherry-pick <commit> 是将某个特定的提交(commit)单独"摘取"到当前分支,等同于把那个提交的改动复制一份应用过来,不会带历史上的其他提交。

cherry-pick 的场景和mergerebase不同:

  • 只想同步上游仓库中的部分特定提交,而不是全部提交。

  • 避免一次性合并大量代码,减小风险。

  • 需要从上游挑选几个重要修复、特性,快速应用到自己的分支。

  • 你的本地分支改动很多,无法做干净的 merge 或 rebase。

bash 复制代码
# 1. 拉取上游最新代码(fetch 但不合并)
git fetch upstream

# 2. 切换到你的 main 分支
git checkout main

# 3. 确保自己的 main 是最新的(拉 origin)
git pull origin main

# 4. 挑选你需要的上游提交依次应用
git cherry-pick abc1234
git cherry-pick def5678

# 5. 解决 cherry-pick 过程中可能出现的冲突
#    手动编辑冲突文件后:
git add <冲突解决的文件>
git cherry-pick --continue

# 6. 处理完所有 cherry-pick 后,推送到远程
git push origin main

总结

场景 推荐操作 优点 缺点
团队多人协作开发 git merge 安全不改写历史,适合多人协作;冲突较易追踪 提交历史可能较多、分叉,显得杂乱
个人项目 / 整理本地提交历史 git rebase 提交历史线性、清晰;便于查看每次改动 改写历史,需谨慎使用;多人开发中易引发冲突
只需要上游某些关键修复或功能,不需全部更新 git cherry-pick 精准引入特定提交;无需同步整个 upstream 操作繁琐;多个提交需多次 cherry-pick;容易冲突

此外

  • 有精力的话持续关注vben项目,有新功能、bug修复、性能优化等可以考虑同步到自己的分支。
  • 业务代码尽量都写在apps目录下,如果迫不得已动了apps外的代码需要记录,方便后续同步。
相关推荐
先跑起来再说8 分钟前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
一只大侠的侠26 分钟前
Flutter开源鸿蒙跨平台训练营 Day 5Flutter开发鸿蒙电商应用
flutter·开源·harmonyos
宇宙帅猴27 分钟前
GitHub 私有仓库认证完整指南:告别密码错误,使用 PAT 令牌
github
一只大侠的侠2 小时前
Flutter开源鸿蒙跨平台训练营 Day6ArkUI框架实战
flutter·开源·harmonyos
AllData公司负责人2 小时前
AllData数据中台-数据同步平台【Seatunnel-Web】整库同步MySQL同步Doris能力演示
大数据·数据库·mysql·开源
一只大侠的侠3 小时前
Flutter开源鸿蒙跨平台训练营 Day 4实现流畅的下拉刷新与上拉加载效果
flutter·开源·harmonyos
2501_943695333 小时前
高职大数据技术专业,怎么参与开源数据分析项目积累经验?
大数据·数据分析·开源
前端市界3 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github
万岳科技程序员小金3 小时前
多商户商城系统源码 + APP/小程序开发:技术架构与应用解
程序员·开源·源码·多商户商城系统源码·多商户商城小程序·多商户商城app开发·多商户商城平台开发
happyprince3 小时前
2026年02月07日热门github项目
github