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

提取出的主要步骤如下:

1 切换到要合并到的仓库

2 git remote add 仓库名 被合并仓库路径

3 git fetch --all

4 git merge 仓库名/被合并仓库想合并的分支


问题描述:

我在本地有两个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远程仓库的所有信息
  4. 切换到D1仓库的主分支master
  5. 合并已添加的远程分支d2到你需要的分支
  6. 处理合并后的分支,如删除远程分支不需要的分支,整理或精简合并后的提交历史,删除D2项目文件等(GIT会将两个仓库的提交按时间的方式来进行合并)
       使用pull直接进行合并
  1.  使用“git pull  远程分支地址”直接合并,应该在新的分支里进行该操作,然后再进行合
  2. 处理合并后的分支,如删除远程分支不需要的分支,整理或精简合并后的提交历史,删除D2项目文件等(GIT会将两个仓库的提交按时间的方式来进行合并)

以上两种方式都可以将一个Git仓库的文件和提交合并到另一个Git仓库(Pull更简单点)

因为对git并不是太了解所以并不太清楚这个之间的关系和区别, 有知道的大神或有其他解决方案请告知不胜感激

stackoverflow上有人说可以使用“git-fast-export”来实现,但搞了一二天愣是没有实现

因为之前测试时没有截图所以也忘记错误是什么了,现在也懒的再测试一遍

参考:

      I mpor t a git repository with all its history into an existing git repository

Merge two git repos into one without renaming files

     Combining multiple git repositories    

     如何导入现有的存储库到另一个 Git ? 

     Can I move the .git directory for a repo to it's parent directory?

来自为知笔记(Wiz)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值