项目背景:
该项目是在2011年11月份使用Asp.net三层帮荷兰某个客户开发的机票预定系统
该客户主要是做中国与欧洲的旅行社业务,特别是最近两年由于中国的发展因此客户也越来越重视机票业务
于是他们跟去哪儿沟通并进行了合作,并我司来完成与去哪儿机票业务的对接业务
因为该客户项目从一开始就由我来负责,因此该对接业务也就自然而然的落到我的身上 
 
问题描述:
因为对接功能需要与现在的项目进行整合,因此我只是在机票预定系统的解决方案里添加了一个新项目(Qunar),并且使用Git来分别进行版本控制(2015前使用VSS,就是因为Git的分支功能)
 
后面由于去哪儿某个功能是在另一个API里实现的,而且跟对接功能也没有太大的关系,因此又将其作为一个单独的项目(QunarServices)来完成
 
在进行对接功能期间网站项目也有变更(对接功能会影响到网站后台的某个功能)
因为这三个分支实现的功能大部分是不一样的,所以我只能按不同的分支来进行管理
重点是在三个项目之间(四个分支加上master)同时进行开发,因为所有项目都使用了N个通用的项目(Model等)所以当某个分支对通用的组件项目进行了变更后,其他的三个分支也需要同步以保持一致(某些分支如果不同步可能也不会影响该分支的功能,只是三个分支通用项目进行同步)
 
关于如何合并其他分支的某些文件,我现在的处理流程是这样的:
  1. 先检验当前分支与要合并分支通用文件的差异(要合并的分支必须要全部commit)
  2. 拉出要“合并某分支文件有差异”的所有文件(通用项目中的文件) git checkout 分支名称 文件名 文件名
  3. 添加并commit到当前分支 git commit -a -m '注释 合并其他分支的某些文件 和合并分支提交时的说明信息'
 
当通用的项目文件很少更改时,以上方案运行的不错
最近去哪儿项目正在收尾阶段,因此在对解决方案进行整合,然后我就发现三个分支里的通用项目都有差异(最近三个分支都对通用项目进行变更且没有合并)
这样就对我整合解决方案带来了很多阻力(我需要将三个分支的通用项目时行合并)
因为通用项目都只是引用了该通用项目的DLL组件而已,所以完全没有必要在每个分支里进行维护(已经从2015年初到至今)
于是我就在想是不是我的解决方案规划有问题而导致了我错误的使用了Git,但如果有问题的话我该如何规则分支和解决方案呢?
 
问题来了:如何在尽量不丢失提交历史的情况下对整个解决方案和分支进行重新规则
 
想到的解决方案:
  1. 在不改变当前分支的情况下,在每个分支里将通用项目进行过滤(不删除项目文件),只将其保留master分支(master从2015后没有进行过合并,需要合并所有通用项目的提交历史大概有50+要循环以上合并流程)
  2. 将通用项目从每个分支过滤,并单独作为一个单独的分支进行维护(同1类似也需要循环以上合并流程)
  3. 删除所有分支并重建(不可能,有很多提交历史)
  4. 其他??
目前分支说明:
master:VSS迁移后的Web基准分支(2015年从VSS迁移后无提交)
website:基于master web项目分支
qunar2:基于master 去哪儿对接项目分支
qunarTTS:基于qunar2 去哪儿对接项目某服务分支
 
 

如何对 GIT 分支进行规划?的更多相关文章

  1. 如何对 GIT 分支进行规划? (转)

    项目背景: 该项目是在2011年11月份使用Asp.net三层帮荷兰某个客户开发的机票预定系统 该客户主要是做中国与欧洲的旅行社业务,特别是最近两年由于中国的发展因此客户也越来越重视机票业务 于是他们 ...

  2. 团队项目的Git分支管理规范

    原文地址: http://blog.jboost.cn/2019/06/17/git-branch.html 许多公司的开发团队都采用Git来做代码版本控制.如何有效地协同开发人员之间,以及开发.测试 ...

  3. Git 分支

    Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照,某一次的提交指向这处时刻的文件快照,看起来就像每次提交都保存了当时的文件,连续的提交形成一条长链 分支 指向某一个特定的提交,不同的 ...

  4. Git分支管理

    一.Git分支的使用 查看分支: git branch 创建分支: git branch branch1 切换到branch1 git checkout branch1 再用git branch查看, ...

  5. Git分支的前世今生

    摘自Jack__CJ  CSDN博客,写得很好,保存一下. 导读 几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系 ...

  6. GIT分支管理模型

    GIT分支管理模型 link: git-branching-model 主分支(Main branches) 项目两个常驻分支: master 主干分支(锁定),仅用于发布新版本,平时不能在上面干活, ...

  7. Git详解之三 Git分支

    相关文档 — 更多 Git 基础培训.ppt GIT 使用经验.ppt GIT 介绍.pptx GIT 分支管理是一门艺术.docx Eclipse上GIT插件EGIT使用手册.docx git/gi ...

  8. git初体验(三)git分支

    分支的理念就是分身,就像孙悟空拔出猴毛变出很多跟自己一模一样的猴子,然后每个猴子做自己的事情互不干涉,等到所有猴子做完之后,猴子集合来合并劳动成果,然后悟空就把那些猴子猴孙门统统收回了. 你创建了一个 ...

  9. 如何在终端实时展现git分支

    在微博上看到ghosTM55在终端可以实时展现出当前运行的分支,觉得很奇特,于是google了一把.这里面存在两个内容,第一个bash,第二个是git bash基础: 了解到linux的shell存在 ...

随机推荐

  1. Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现

    前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...

  2. spring-boot 速成(10) -【个人邮箱/企业邮箱】发送邮件

    发邮件是一个很常见的功能,代码本身并不复杂,有坑的地方主要在于各家邮件厂家的设置,下面以qq个人邮箱以及腾讯企业邮箱为例,讲解如何用spring-boot发送邮件: 一.添加依赖项 compile ' ...

  3. [置顶] Android系统移植与调试之------->build.prop文件详细赏析

    小知识:什么是build.prop?   /system/build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件.这个文件是如 ...

  4. Programming 2D Games 读书笔记(第六章)

      http://www.programming2dgames.com/chapter6.htm 示例一:Bounce 边界碰撞测试 velocity为移动的速度, 超过右边界,velocity.x为 ...

  5. TrinityCore3.3.5环境搭建

    说起TrinityCore,可能知道的人不多,但是说起MaNGOS(芒果)知道的人应该就不少了.MaNGOS是一个魔兽私服服务器端,TrinityCore继承自TrinityCore并且做了优化,一直 ...

  6. IIS7下配置ASP+ACCESS环境

    先要设置应用程序池(Application Pool)为Classic .NET AppPool,而不是默认的Default AppPool,可以在网站目录里对每个站点设置,也可以在站点进行单独设置. ...

  7. 找不到"javax.servlet.annotation.WebServlet"解决方法

    以前创建的一个项目,打开的时候总是报错. import javax.servlet.annotation.WebServlet; 后来想起当时这个项目是发布在tomcat7.0下面的, 也就是说当时这 ...

  8. ios成长之每日一遍(day 4)

    今天, 主要讲四种常见的问题, 废话不多说了, 直接开始. 自动布局:这个我发现有一篇文章写得非常好, 直接表明出地http://www.cocoachina.com/applenews/devnew ...

  9. 中文代码之Spring Boot集成H2内存数据库

    续前文: 中文代码之Spring Boot添加基本日志, 源码库地址相同. 鉴于此项目中的数据总量不大(即使万条词条也在1MB之内), 当前选择轻量级而且配置简单易于部署的H2内存数据库比较合理. 此 ...

  10. 在windows2012上安装MSSQL 2008 Manage Studio 出现错误

    在windows2012上安装MSSQL 2008 Manage Studio 出现错误: 解决方法:重新建立一个管理员账户,用另外一个账户登陆,然后安装. 原因:未知 --------------- ...