项目背景:
该项目是在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. Luci - UCI (Unified Configuration Interface)

    参考: http://wiki.openwrt.org/doc/techref/uc http://luci.subsignal.org/api/luci/modules/luci.model.uci ...

  2. windows phone (20) Image元素

    原文:windows phone (20) Image元素 之前有说道wp目前支持的图片格式为png和jpeg ,我们可以通过设置Source属性设置图片源,下面要说的是Iamge元素的部分属性,这就 ...

  3. C++经典面试题(二)

    近期看一些面试题,认为假设自己被问到了,并不能非常利落的回答出来. 一是从来没有这个意识,二是没有认真的梳理下. 以下对这些题做出分析,哈!个人能力有限,当中难免有疏漏,欢迎大家补充咯. 11.引用与 ...

  4. 垂死或涅槃重生 -- Delphi XE5 我们将宣布感情的回归

    Delphi 在很大程度上是一个被遗忘我的工具. 无论是在使用RapidSql , 我还没有收到Embarcadero 本公司发行参与邀请Delphi XE5该公告将. 可能有人会问,为什么Embar ...

  5. 解决ubuntu 14.04在显示屏电缆被拔出的问题

    我是一个ubuntu14.04和win7双系统.于win在正常的网络.但在ubuntu网络连接有一直显示线被拔掉,您只能连接到无线Wi-Fi,没有有线网络. 关于这个问题,,最终找到的一种方式,这是进 ...

  6. CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

    金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同一时候他也是一个黑客. 考试结束后不久.他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点. 在入侵的过程中.他发 ...

  7. MYSQL,innodb_buffer_pool_size内存分配

    为MYSQL.innodb_buffer_pool_size=8G.MySQL一起动就会将占用掉8G内存(觉得TOP能够看到内存被使用了8G),可是近期才细致研究一下.原来不是这种(可能自己对Linu ...

  8. 重新想象 Windows 8 Store Apps (28) - 选取器: CachedFileUpdater(缓存文件更新程序)

    原文:重新想象 Windows 8 Store Apps (28) - 选取器: CachedFileUpdater(缓存文件更新程序) [源码下载] 重新想象 Windows 8 Store App ...

  9. centos7关闭防火墙(转)

    直接命令:service firewalld stop 1. Disable Firewalld Service. [root@rhel-centos7-tejas-barot-linux ~]# s ...

  10. 64位内核注冊tty设备

    在64位系统中,注冊tty设备须要注意的是,Android跑在EL0而且在32位模式下,kernel跑在EL1而且在64位模式下,不但内核须要打开CONFIG_COMPAT选项,非常多android上 ...