Git 分支迁移完整指南(结合分支图分析)
基于分支图的当前状态分析
分支图关键信息解读
-
分支结构:
-
核心分支状态:
分支类型 分支名称 最新提交 状态 新主分支 new-development
b82fd7b9 您创建的开发分支 旧主分支 master
dccc1171 需要保留的历史分支 待清理分支 old-master
未在图中显示 重命名后需处理 -
操作关键点:
- 图中的"切为主分支的新分支"标注明确显示了您的目标分支 (b82fd7b9)
- "旧有主分支" (dccc1171) 需要被正确归档
- 存在7个未提交更改(图中标注Uncommitted Changes (7))
完整操作流程(结合图示)
步骤1:处理未提交更改
# 暂存当前工作区更改(图中显示7个未提交更改)
git add .
git commit -m "保存最后的修改 b1.00没有乱码文件"
步骤2:创建并切换到新分支结构
# 基于指定提交创建新分支(图中G3243d4c)
git checkout -b temp-branch G3243d4c# 重命名分支为开发主线
git branch -m temp-branch main
步骤3:迁移旧分支历史
# 标注旧主分支(图中dccc1171)
git branch archive/legacy-main dccc1171# 推送到远程存档
git push 我的测试仓库二期 archive/legacy-main
步骤4:建立新主分支(结合图中最新提交)
# 切换到图中最新提交 (b1.00没有乱码文件)
git checkout b82fd7b9# 创建永久主分支
git checkout -b production-main
git push -f 我的测试仓库二期 production-main
分支图优化建议
1. 规范化分支命名
- master
- old-master
+ main
+ archive/2025-08-legacy
2. 提交信息优化建议
# 坏例子:
git commit -m "删除"# 好例子:
git commit -m "refactor: 移除冗余配置文件 - JIRA-123"
3. 分支清理策略
# 定期清理合并后的分支
git branch --merged main | grep -v "main" | xargs git branch -d# 归档一年前的旧分支
git tag archive/2025-Q3-legacy archive/legacy-main
git push 我的测试仓库二期 --tags
迁移后分支图结构目标
graph RL
A[5e99711 v1.00] --> B[归档分支]
C[最新功能] --> D((生产主分支))
E[热修复] --> D
F[实验功能] --> G[|分离开发|]
团队协作更新步骤
-
通知所有成员:
# [重要] 分支结构调整通知 自2025-08-06起: - 新主分支:`production-main` - 旧分支归档于:`archive/legacy-main` 请立即执行以下命令更新:
-
成员执行命令:
git fetch --all --prune git checkout production-main git reset --hard 我的测试仓库二期/production-main
-
CI/CD配置更新:
# .gitlab-ci.yml 修改示例 deploy_production:only:
-
- master
-
- production-main
操作验证清单
-
分支一致性检查:
git log production-main -1 # 应输出:b1.00没有乱码文件 (b82fd7b9)
-
历史完整性验证:
git show archive/legacy-main # 应显示旧主分支最后提交:dccc1171
-
远程同步确认:
git remote show 我的测试仓库二期 # 应包含: # production-main tracked # archive/legacy-main tracked
常见问题解决方案
问题1:合并冲突处理
# 使用交互式重基解决
git rebase -i production-main
# 保留所需提交,丢弃冲突提交
问题2:意外删除恢复
# 从归档分支恢复文件
git checkout archive/legacy-main -- path/to/file
问题3:大型历史清理
# 使用BFG工具清理历史
java -jar bfg.jar --delete-files *.log --no-blob-protection my-repo.git
https://github.com/0voice