将远程 main 分支同步到 develop 分支的完整指南
标准同步流程(推荐)
- 确保本地 develop 分支干净:
git checkout develop
git status# 确认没有未提交的修改
- 获取最新远程变更:
git fetch origin
- 执行合并操作(两种主流方式):
方式一:合并式同步(保留提交历史)
git merge origin/main --no-ff# --no-ff 保留合并提交记录
✅ 适合需要审计跟踪的场景
方式二:变基式同步(线性历史)
git rebase origin/main
✅ 适合保持干净线性历史的项目
- 解决可能的冲突:
- 查看冲突文件:
git status
- 手动编辑标记为
<<<<<<<
的文件 - 标记已解决:
git add <冲突文件>
- 继续操作:
git merge --continue# 或 git rebase --continue
- 推送更新到远程 develop:
git push origin develop
强制同步方案(谨慎使用)
当需要完全覆盖 develop 分支时:
git checkout develop
git reset --hard origin/main# 注意:这将丢弃所有本地修改
git push -f origin develop# 强制推送
可视化工作流
关键注意事项
- 权限检查:
git remote show origin# 确认有推送权限
- 差异预览(合并前检查):
git diff develop..origin/main
- 创建备份分支(安全措施):
git branch develop-backup develop
- CI/CD 集成:如果使用自动化部署,需同步更新 CI 配置
冲突解决速查表
冲突类型 | 解决方案 |
---|---|
文件删除冲突 | git rm <文件名> |
内容修改冲突 | 手动编辑后 git add |
二进制文件冲突 | 使用 git checkout --ours/--theirs |
大量冲突时 | 使用合并工具:git mergetool |
高级技巧
- 使用 pull request 同步(企业级推荐):
git checkout -b sync-main-to-develop
git merge origin/main
# 在 GitHub/GitLab 创建 PR 到 develop 分支
- 自动化同步脚本:
#!/bin/bash
git checkout develop
git fetch origin
git merge origin/main --no-edit
git push origin develop
- 保护分支设置:
- 在仓库设置中配置:
- Require pull request reviews
- Require status checks to pass
最佳实践建议:在团队协作中,优先使用 Pull Request 方式同步而非直接推送,便于代码审查和变更跟踪。对于关键分支,建议启用分支保护规则。