问题描述:

我在本地有两个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. Hadoop化繁为简(一)-从安装Linux到搭建集群环境

    简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的吸引了我的兴趣,看了网上很多文章,感觉还是云里雾里,很多不必 ...

  2. KVM磁盘镜像qcow2、raw、vmdk等格式区别(转)

    raw(default) the raw format is a plain binary image of the disc image, and is very portable. On file ...

  3. How to replace a value in web.xml with a Maven property?(转)

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-p ...

  4. 微信小程序开发需要注意的29个坑

    1.小程序名称可以由中文.数字.英文.长度在3-20个字符之间,一个中文字等于2个字符. 2.小程序名称不得与公众平台已有的订阅号.服务号重复.如提示重名,请更换名称进行设置. 3.小程序名称在帐号信 ...

  5. Calculate CRC32 as in STM32 hardware (EWARM v.5.50 and later)

    http://supp.iar.com/Support/?note=64424&from=note+11927 BackgroundThe STM32 devices from ST Micr ...

  6. Task Parallel Library01,基本用法

    我们知道,每个应用程序就是一个进程,一个进程有多个线程.Task Parallel Library为我们的异步编程.多线程编程提供了强有力的支持,它允许一个主线程运行的同时,另外的一些线程或Task也 ...

  7. 报错:Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

    在保存数据的时候报这个错误,知道是验证错误,但到底是哪个属性验证错误呢? →打断点,运行,观察程序出错的地方→在出错的部分添加try...catch语句块→添加监视,输入((System.Data.E ...

  8. Android如何运行真机在eclipse上调试应用?

    主要通过以下几个步骤: 1.手机通过数据线连接在电脑上 2.设置android手机为USB调试模式.步骤: menu—> 设置 —> 应用程序 —> 开发 , 选择[USB调试] 3 ...

  9. 批量生成protoBuf到cs文件

    color 0A && echo off rem protoc程序名set "PROTOC_EXE=protoc.exe"rem .proto文件名::set &q ...

  10. WordPress基础:在浏览站点时顶部显示工具栏显示隐藏

    然后在底部加入: <?php wp_footer();?>