问题描述:

我在本地有两个Git库项目(D1=PC项目 包含通用项目,D2=移动项目 也包含通用项目这两个项目在同一目录下),因为这两个项目使用的通用项目是一样的如数据库访问等
 
只有显示层(view)不一样而已,因为在之前没有很好的规划而导致出现现在的问题,即如果D1里更改了通用项目的文件
 
那么D2需要先将D1通用项目的更改先合并过来然后再处理D2项目(防止出现差异导致出现问题),反之也是一样,所以如果通用项目文件经常更新时,我就需要浪费大量的时间在合并这两个Git仓库上
 
所以要现在要将把这两个库项目合并到一个库里以分支的方式(D1,D2)进行管理(开发PC项目时切换到D1分支,开发移动项目时切换到D2分支)
 
然后通用项目分别从D1,D2分支迁移出来到新分支Common单独进行管理,然后D1和D2删除通用项目文件
 
现在我如何将一个库合并到另一个库呢(提交记录必须不能丢失)?经过几天的测试终于解决
 
需要解决的问题:
     把D2仓库的所有内容和提交记录合并到D1 仓库中中,然后以分支的方式来管理D2项目
    如何从D2仓库和D1仓库迁移出通用项目文件并保留提交记录以后会单独处理
目前的目录结构
F:
 |--   D1
       |-- D1.txt
        |--.git
 |--   D2
       |-- D2.txt
        |--.git
 
我期望的目录结构
F:
 |--   D1
       |-- D1.txt
        |--.git
          |--   D2  合并D2仓库文件和提交记录到D1,以分支的方式管理
          |-- D2.txt
  
解决方案:
     先看下D1和D2的提交记录
 
D2仓库的提交记录
D1仓库的提交记录
 
使用remote加fetch的方法将D2的文件和提交合并到D1
  1. 切换到D1 Git仓库
  2. 使用“git remote add d2 ../d2”将D2仓库中所有信息以远程仓库的方式添加到D1的新建d2分支里
  3. 使用“git fetch --all”获取d2远程仓库的所有信息,--a 代表获取D2仓库的所有分支和tag等信息(合并前请尽量保持一个分支,否则合并后提交记录不忍直视)
  4. 切换到D1仓库的主分支master
  5. 合并已添加的远程分支d2到你需要的分支
  6. 处理合并后的分支,如删除远程分支不需要的分支,整理或精简合并后的提交历史,删除D2项目文件等(GIT会将两个仓库的提交按时间的方式来进行合并)
     
使用pull直接进行合并
  1. 使用“git pull  远程分支地址”直接合并,应该在新的分支里进行该操作,然后再进行合
  2. 处理合并后的分支,如删除远程分支不需要的分支,整理或精简合并后的提交历史,删除D2项目文件等(GIT会将两个仓库的提交按时间的方式来进行合并)

 
以上两种方式都可以将一个Git仓库的文件和提交合并到另一个Git仓库(Pull更简单点)
因为对git并不是太了解所以并不太清楚这个之间的关系和区别
 
stackoverflow上有人说可以使用“git-fast-export”来实现,但搞了一二天愣是没有实现
因为之前测试时没有截图所以也忘记错误是什么了,现在也懒的再测试一遍
 
参考:

如何导入另一个 Git库到现有的Git库并保留提交记录的更多相关文章

  1. 使用git svn clone迁移svn仓库(保留提交记录)

    使用git svn clone迁移svn仓库 clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表. git svn clone https://172 ...

  2. 导入另一个 Git库到现有的Git库并保留提交记录

    在要合并到的目标git仓库,执行 "git pull  远程分支地址/本地git仓库根目录"

  3. 【Git】原Git库拆分子目录作为新仓库,并保留log记录

    一.需求描述: 现有一个git仓库,Team A和Team B的人操作同一仓库的不同目录,Team A的dev希望Team B的dev没有权限review属于Team A的代码目录,故现需要先将这个g ...

  4. 合并两个git仓库并保留提交记录

    case如下: 有2个git仓库:repo1.repo2: 想将repo1中的文件移入repo2: repo1的历史日志要保留:   1 2 # 1.将repo1作为远程仓库,添加到repo2中,设置 ...

  5. git更换仓库,保留分支,保留提交记录及开发权限

    别人推荐的方法都很复杂,这个步骤自己亲自尝试过,非常简单好用. 1.从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare https://github....(原 ...

  6. git的学习笔记(一):git本地操作

    1.Git介绍 Git是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发. Git ...

  7. git操作指令,以及常规git代码操作

    安装git后操作指令如下:可以查阅git安装使用操作指南详情git安装使用操作图示详情.note 线上可参考指南:http://www.bootcss.com/p/git-guide/   所有操作在 ...

  8. git log 查看提交记录,参数:

    git log 查看提交记录,参数:-n (n是一个正整数),查看最近n次的提交信息 $ git log -2 查看最近2次的提交历史记录 -- fileName fileName为任意文件名,查看指 ...

  9. GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。

    GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...

随机推荐

  1. 硬盘img镜像备份工具

    linux下使用dd,Windows下使用WinImage,不过dd使用的比较多.

  2. [原创]App性能测试指标篇

    [原创]App性能测试指标篇 目前由于苹果,三星等大厂对智能手机的研发及投入,使的智能手机发展非常迅速,每个人手中都有一些离不开生活的App,如:微信,微博,百度或是各游戏App等,但是到底App性能 ...

  3. SWD and JTAG selection mechanism

    SWD and JTAG selection mechanism SWJ-DP enables either an SWD or JTAG protocol to be used on the deb ...

  4. LINUX 源码+内核所有参数说明

    http://www.cnblogs.com/tolimit/p/5065761.html

  5. Java异常---获取异常的堆栈信息

    Java 实例 - 获取异常的堆栈信息  Java 实例 以下实例演示了使用异常类的 printStack() 方法来获取堆栈信息: Main.java 文件 public class Main{ p ...

  6. ASIHTTPRequest系列(一):同步和异步请求

    ASIHTTPRequest系列(一):同步和异步请求 发表于8个月前(2013-11-27 19:21)   阅读(431) | 评论(0) 6人收藏此文章, 我要收藏 赞0 ASIHTTPRequ ...

  7. 安装oracle 11g环境变量ORACLE_HOME的一个问题 转

    http://blog.itpub.net/26129555/viewspace-1243467/报错内容: OUI-10137:An Oracle Home with name ORACLE_HOM ...

  8. WordPress主题开发:实现分页功能

    注意的是这个受后台这里的文章篇数设置所影响~ 一.使用内置方法 (WordPress 4.1以前无效) the_posts_pagination 输出分页式导航,用法: <?php the_po ...

  9. Java 与 Json的互相转换

    这几天一直在做Java解析Json数据的一个项目,因为初识json,所以很多东西都是有着懵懂的认识.这里写下我解析时遇到的问题和收获. 我解析json时用到的是json-lib包.下载地址:http: ...

  10. 在websocket中怎么样注入service类

    最近项目中用到了websocket,遇到很多问题,其中一个是@ServerEndpoint修饰的类无法注入其他的bean,注入的对象都是null,在网上找了好多资料,无意中发现一个朋友的答案给了思路. ...