Rebase vs Merge
Merge(合并)
- 创建新的合并提交
- 保留非线性历史
- 保持完整的分支记录
- 适合公共分支间合并
Rebase(变基)
- 重写提交历史
- 创建线性历史
- 看起来像顺序开发
- 适合特性分支更新
使用原则
| 原则 |
说明 |
| 公共分支用 merge |
不要在公共分支(main/develop)上 rebase |
| 特性分支用 rebase |
更新特性分支或准备合并到主分支 |
| 团队统一规范 |
确保团队理解并遵守相同的工作流程 |
| 操作前备份 |
rebase 前创建备份分支或推送到远程 |
切换默认分支(main → master)
1. 创建并推送 master 分支
1 2 3 4 5
| git branch master main
git push origin master
|
2. 在远程仓库更改默认分支
- GitHub: Settings → Branches → Default branch → 选择 master
- GitLab: Settings → Repository → Default Branch → 选择 master
- Bitbucket: Repository settings → Branches → Main branch → 选择 master
3. 删除旧的 main 分支(可选)
1 2 3 4 5 6 7 8
| git checkout master
git branch -d main
git push origin --delete main
|
注意:更改默认分支会影响其他开发者和 CI/CD,需提前通知团队。
分支同步(develop → master)
方法一:Reset(重置,丢弃所有修改)
1 2 3 4 5 6 7
| git checkout master git pull origin master
git checkout develop git reset --hard origin/master
|
警告:会丢弃 develop 上所有不在 master 的提交。
方法二:Merge(合并,保留历史)
1 2
| git checkout develop git merge master
|
保留 develop 的提交历史,将 master 的更改合并进来。
方法三:Rebase(变基,线性历史)
1 2
| git checkout develop git rebase master
|
将 develop 的更改重新应用到 master 之上,可能产生冲突。
方法四:重建分支(彻底同步)
1 2 3 4
| git checkout master git branch -D develop git checkout -b develop git push -f origin develop
|
警告:强制推送会重写远程历史,需与团队沟通。
安全建议
操作前创建备份:
1 2
| git checkout develop git branch backup_develop
|
出现问题时可用备份恢复。