RustDesk 分支日常更新同步

Zhan Kui Lv1

Fork 了 rustdeskhbb_common 项目,创建了 my_dev 分支,目的是恢复旧版的内置服务器地址功能,并保持与上游项目同步更新。记录下同步上游源更改和保持自有修改的步骤:

GitHub 网页操作部分

在 GitHub 网页上完成以下操作:

  • rustdesk 仓库:点击 “Sync fork” → “Update branch”,将 master 分支与上游同步
  • hbb_common 仓库:点击 “Sync fork” → “Update branch”,将 main 分支与上游同步
  • hbb_common 仓库:选择 my_dev 分支,一般情况下可以在网页上直接合并:点击 “Sync fork” → “Update branch”

本地同步步骤

1. 进入 RustDesk 主仓库目录

1
cd D:\*****\rustdesk

2. 同步本地 master 分支

1
2
git checkout master
git pull origin master

说明:拉取你在 GitHub 网页上已同步过的 master 分支更新


3. 同步子模块的 main 和 my_dev 分支

1
2
3
4
5
6
cd libs\hbb_common
git checkout main
git pull origin main
git checkout my_dev
git pull origin my_dev
cd ..\..

说明

  • 拉取子模块 main 分支(已在网页上同步过上游)
  • 拉取子模块 my_dev 分支(已在网页上合并过 main)

4. 确保 master 分支使用最新的子模块 main

1
2
3
4
5
6
7
git checkout master
cd libs\hbb_common
git checkout main
cd ..\..
git add libs\hbb_common
git commit -m "Update submodule to latest main"
git push origin master

说明:如果子模块引用有更新,提交到 master 分支(如果没更新,commit 会提示无需提交)


5. 合并 master 到 my_dev 分支

1
2
3
git checkout my_dev
git pull origin my_dev
git merge master

说明:将 master 的更新合并到 my_dev,这里可能会提示子模块冲突(预期行为)


6. 解决子模块冲突

1
2
3
4
cd libs\hbb_common
git checkout my_dev
cd ..\..
git add libs\hbb_common

说明:让 my_dev 分支使用子模块的 my_dev 分支(而不是 main)


7. 检查是否有其他冲突

1
git status

说明

  • 如果显示 “Unmerged paths”,说明有文件冲突需要手动解决
  • 手动编辑冲突文件,删除冲突标记 <<<<<<<=======>>>>>>>
  • 解决后运行:git add <冲突文件>

8. 提交合并并推送

1
2
git commit -m "Merge master into my_dev"
git push origin refs/heads/my_dev

说明

  • 完成合并提交
  • 使用 refs/heads/my_dev 避免推送时的引用歧义

9. 验证结果

1
2
git status
git log --oneline --graph -5

说明:检查工作区状态和最近的提交历史


完整一键命令(复制粘贴版)

如果没有冲突,可以直接复制以下命令一次性执行:

1
2
3
4
5
6
7
8
9
cd D:\*****\rustdesk; `
git checkout master; git pull origin master; `
cd libs\hbb_common; git checkout main; git pull origin main; git checkout my_dev; git pull origin my_dev; cd ..\..;`
git checkout master; cd libs\hbb_common; git checkout main; cd ..\..;`
git add libs\hbb_common; git commit -m "Update submodule to latest main"; git push origin master;`
git checkout my_dev; git pull origin my_dev; git merge master;`
cd libs\hbb_common; git checkout my_dev; cd ..\..;`
git add libs\hbb_common; git commit -m "Merge master into my_dev"; git push origin refs/heads/my_dev;`
git status

注意:PowerShell 中使用反引号 ` 续行


故障处理

如果合并出错想重来

1
2
3
4
5
# 放弃合并
git merge --abort

# 重置到远程版本
git reset --hard origin/my_dev

如果子模块状态异常

1
2
# 强制重新初始化子模块
git submodule update --init --recursive --force

如果推送失败

1
2
3
4
5
# 使用完整引用推送
git push origin refs/heads/my_dev

# 或强制推送(慎用)
git push origin my_dev --force-with-lease

最终状态

同步完成后:

  • 📦 主仓库 master 分支 → 使用子模块 main 分支(与上游完全同步)
  • 🔧 主仓库 my_dev 分支 → 使用子模块 my_dev 分支(你的开发版本,已包含上游更新)
  • 标题: RustDesk 分支日常更新同步
  • 作者: Zhan Kui
  • 创建于 : 2026-03-31 08:58:25
  • 更新于 : 2026-03-31 14:37:35
  • 链接: https://blog.120528.xyz/2026/03/31/63df5232/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论