当前位置: 首页 > ds >正文

Git 分支迁移完整指南(结合分支图分析)

基于分支图的当前状态分析

分支图关键信息解读

  1. 分支结构​:

    最旧提交
    5e99711:54 我的测试仓库项目 v1.00
    a5f7a7 81版本我的测试仓库二期
    dccc1171:56 旧有主分支
    fd508f1c 删除
    G3243d4c 空提交
    b82fd7b9 切为主分支的新分支
    最新提交: b1.00没有乱码文件
  2. 核心分支状态​:

    分支类型分支名称最新提交状态
    新主分支new-developmentb82fd7b9您创建的开发分支
    旧主分支masterdccc1171需要保留的历史分支
    待清理分支old-master未在图中显示重命名后需处理
  3. 操作关键点​:

    • 图中的​"切为主分支的新分支"​标注明确显示了您的目标分支 (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[|分离开发|]

团队协作更新步骤

  1. 通知所有成员​:

    # [重要] 分支结构调整通知
    自2025-08-06起:
    - 新主分支:`production-main`
    - 旧分支归档于:`archive/legacy-main`
    请立即执行以下命令更新:
    
  2. 成员执行命令​:

    git fetch --all --prune
    git checkout production-main
    git reset --hard 我的测试仓库二期/production-main
    
  3. CI/CD配置更新​:

    # .gitlab-ci.yml 修改示例
    deploy_production:only:
    
  •    - master
    
  •    - production-main
    

操作验证清单

  1. 分支一致性检查​:

    git log production-main -1
    # 应输出:b1.00没有乱码文件 (b82fd7b9)
    
  2. 历史完整性验证​:

    git show archive/legacy-main
    # 应显示旧主分支最后提交:dccc1171
    
  3. 远程同步确认​:

    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

http://www.xdnf.cn/news/17306.html

相关文章:

  • JavaWeb(04)
  • 每日五个pyecharts可视化图表-bars(5)
  • SQL的条件查询
  • PDF注释的加载和保存的实现
  • jspdf或react-to-pdf等pdf报错解决办法
  • QT自定义控件
  • 学习日志29 python
  • 微信小程序多媒体功能实现
  • 大型音频语言模型论文总结
  • 使用Nginx部署前后端分离项目
  • 0806线程
  • MCU程序段的分类
  • http请求结构体解析
  • 【注意】HCIE-Datacom华为数通考试,第四季度将变题!
  • 时隔六年!OpenAI 首发 GPT-OSS 120B / 20B 开源模型:性能、安全与授权细节全解
  • Spring Boot部门管理系统:查询、删除、新增实战
  • 嵌入式处理器指令系统:精简指令集RISC与复杂指令集CISC的简介,及区别
  • 数据结构学习(days04)
  • Node.js- express的基本使用
  • 嵌入式学习---在 Linux 下的 C 语言学习 Day9
  • 《第五篇》基于RapidOCR的图片和PDF文档加载器实现详解
  • 基于单片机GD32E103的HID按键问题分析
  • 日常反思总结
  • electron:vue3+vite打包案例
  • Spring Cloud系列—Eureka服务注册/发现
  • CSS高频属性速查指南
  • 【普通地质学】地球的物质组成
  • Windows 如何上架 iOS 应用?签名上传全流程 + 工具推荐
  • LeetCode——118. 杨辉三角
  • 【Git】修改本地和远程的分支名称