首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何合并两个Git仓库?

如何合并两个Git仓库?

提问于 2017-12-04 03:38:38
回答 2关注 0查看 918

"考虑以下情况:

我在自己的Git回购中开发了一个小实验项目A. 现在它已经成熟了,我希望A成为大型项目B的一部分,它有自己的大型仓库。我现在想添加A作为B的一个子目录。

如何将A合并到B中,而不会丢失任何一方的历史记录?"

回答 2

晓小峰哦

发布于 2017-12-04 06:33:35

子模块

将存储库A复制到大型项目B中的单独目录中,或者(可能更好)将存储库A复制到项目B中的子目录中。然后使用git子模块将此存储库作为存储库B 的子模块。

对于松散耦合的存储库来说,这是一个很好的解决方案,在存储库A中的开发仍在继续,而大部分开发是在A中单独独立开发的。另请参阅Git Wiki上的子模块支持和GitSubmoduleTutorial页面。

子树合并

可以使用子树合并策略将存储库A合并到项目B的子目录中。

代码语言:txt
AI代码解释
复制
git remote add -f Bproject /path/to/B
代码语言:txt
AI代码解释
复制
git merge -s ours --allow-unrelated-histories --no-commit Bproject/maste
代码语言:txt
AI代码解释
复制
git read-tree --prefix=dir-B/ -u Bproject/maste
代码语言:txt
AI代码解释
复制
git commit -m "Merge B project as our subdirectory"
代码语言:txt
AI代码解释
复制
git pull -s subtree Bproject maste
代码语言:txt
AI代码解释
复制
(--allow-unrelated-historiesgit> = 2.9.0需要选项)

或者你可以使用apenwarr(Avery Pennarun)的git subtree工具(github上的仓库)

Tabor

发布于 2017-12-04 06:32:05

一个存储库的单个分支可以很容易地放置在保存其历史的子目录下。例如:

代码语言:txt
AI代码解释
复制
git subtree add --prefix=rails git://github.com/rails/rails.git maste

这将作为一个单独的提交,其中Rails主分支的所有文件都被添加到“rails”目录中。但是,提交的标题包含对旧历史树的引用。

代码语言:txt
AI代码解释
复制
Add 'rails/' from commit <rev>
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
git log <rev>
代码语言:txt
AI代码解释
复制
git blame <rev> -- README.md

请注意,不能从这里看到目录前缀,因为这是一个完整的旧分支。应该像通常的文件移动提交一样对待

代码语言:txt
AI代码解释
复制
# finishes with all files added at once commit
代码语言:txt
AI代码解释
复制
git log rails/README.md
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
# then continue from original tree
代码语言:txt
AI代码解释
复制
git log <rev> -- README.md

还有其他更复杂的解决方案,如手动执行或重写其他答案中所述的历史记录。

git-subtree命令是官方git-contrib的一部分,一些数据包管理器默认安装它(OS X Homebrew)。但是你可能需要自己安装它,除了git

和开发者交流更多问题细节吧,去 写回答
相关文章
git 合并两个仓库
好了还是回到问题,我想把两个git合并 首先用git bash 到我的一个仓库,作为需要合并的仓库 cd 仓库 添加我要合并仓库 # git remote add 仓库 仓库可以是远程仓库 git remote add lindexi git@github.com:lindexi/lindexi.github.io.git 从远程仓库下载,这时我们弄个新的 git branch lindexi git checkout lindexi git fetch lindexi git merge lindexi/
林德熙
2018/09/18
2.5K0
git 合并两个仓库
好了还是回到问题,我想把两个git合并 首先用git bash 到我的一个仓库,作为需要合并的仓库 cd 仓库 添加我要合并仓库 # git remote add 仓库 仓库可以是远程仓库 git remote add lindexi git@github.com:lindexi/lindexi.github.io.git 从远程仓库下载,这时我们弄个新的 git branch lindexi git checkout lindexi git fetch lindexi git merge lindexi/
林德熙
2022/08/09
1.4K0
Git-合并两个不同的仓库
背景:由于拆分微前端,需要将最新代码合并到已经拆分的微前端项目,即需要将 2 个项目合并。 1.git 合并两个不同的仓库必备知识 1>.列出本地已经存在的分支 git branch 2>.查看当前 git 关联的远程仓库 git remote -v 3>.解除当前仓库关联的远程仓库 git remote remove origin //origin 远程分支别名 4>.git 同时关联多个远程仓库 //当前默认仓库别名为origin git remote add origin http://km-
leader755
2022/09/29
2.7K0
合并两个不相关的Git仓库
大致是这样的场景:有两个仓库,一个Git仓库,一个SVN仓库,都是非空的。现在要把SVN仓库中的内容合入Git仓库中,并保留提交记录。听起来有点奇怪,不过现实中的问题总是千奇百怪加变态。既然遇到了,总得想办法解决。花了将近1个小时,简单总结一下。 按照问题的描述,问题可以演变成两部分: 1. 将SVN仓库转换成Git仓库,这一步很简单。百度说:上我吧,我能给你100页的答案;谷歌说:上我吧,我能给你1000页的答案(Sounds weird)。简单来说,就是使用git svn clone 命令,或者使用To
用户1516716
2018/04/02
1.2K0
git 合并两个仓库,并保留历史记录
问题 repo1 repo2是两个无关联的仓库,需要合并并保留两者的提交历史 git checkout repo1 repo1/master git checkout repo2 repo2/master git merge repo1 直接尝试合并时会报错 fatal: refusing to merge unrelated histories 解决步骤 使用参数–allow-unrelated-histories合并 git merge repo1 --allow-unrelated-hist
路过君
2023/02/10
6550
git绑定两个远程仓库
最近在做公司项目,之前公司项目统一托管在codding 码云,最近我想把项目与自己的gitlab私人仓库再连接一下,作为自己作品收录的地方,这里总结一下用到的git命令及问题。 1、首先, 找到当前已
蓓蕾心晴
2018/04/12
1.7K0
git绑定两个远程仓库
Git 设置两个远程仓库地址
站长对于Git的使用还是非常低级的,停留在可视化工具上。 产品一直是用国内的 Gitee (码云)托管(因为有免费的私有仓库), 自从 Github 免费了私有仓库,站长就将一些作品也弄了一份到 GitHub,所以本地就需要配置两个远程仓库链接地址。
星哥玩云
2022/08/13
9200
Git 设置两个远程仓库地址
【Git】Git 分支管理 ( 解决分支合并冲突 | 前置环境准备 | 远程仓库发起分支合并 | 在远程仓库解决分支冲突 | 在远程仓库正式合并分支版本 )
在 【Git】Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 feature1 分支并提交 | 修改 master 主版本并提交 ) 博客的基础上 , 在远程仓库发起分支合并操作 ;
韩曙亮
2023/03/30
2.5K0
【Git】Git 分支管理 ( 解决分支合并冲突 | 前置环境准备 | 远程仓库发起分支合并 | 在远程仓库解决分支冲突 | 在远程仓库正式合并分支版本 )
如何同步多个 git 远程仓库
以前源码是托管在 github 的, 现在想要同步托管在 gitee, 一做备份分发, 二方便国内下载使用(网速可观), 三防特色墙...
java思维导图
2019/07/19
1.5K0
如何合并两个TensorFlow模型
这是Tensorflow SavedModel模型系列文章的第三篇,也是终章。在《Tensorflow SavedModel模型的保存与加载》中,我们谈到了Tensorflow模型如何保存为SavedModel格式,以及如何加载之。在《如何查看tensorflow SavedModel格式模型的信息》中,我们演示了如何查看模型的signature和计算图结构。在本文中,我们将探讨如何合并两个模型,简单的说,就是将第一个模型的输出,作为第二个模型的输入,串联起来形成一个新模型。
云水木石
2019/07/01
3K1
如何同步多个 Git 远程仓库
链接 | https://my.oschina.net/taadis/blog/3073220
好好学java
2019/12/05
1.4K0
如何同步多个 Git 远程仓库
Git当中如何commit代码到本地git仓库
3.commit代码到本地git仓库 选中需要 Commit 的项目,右键->Team->Commit,注意要把下图中Unstaged Changes里面的文件,右击add to index,加到下面的Staged Changes里面来才能把它们提交。
马克java社区
2019/08/21
9690
Git当中如何commit代码到本地git仓库
漫画:如何合并两个有序链表
第21题:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
程序员小浩
2020/03/31
6360
Git 如何切换到不同远程仓库
例如我们有一个项目 USRealEstate,当前使用的是微信的 Git,我们希望切换到 GitHub 上。
HoneyMoose
2020/08/01
1.3K0
Git 如何切换到不同远程仓库
如何快速合并两个字典
现在有两个字典: x = {'a':1,'b':2}y = {'b':10,'c':11} 如何将这两个字典合并成一个新的字典z,有看过我之前写的文章可能会知道使用,一个接受多个字典并将它们在逻辑上变为一个字典。为什么说在逻辑上?因为类只是在内部创建了一个容纳这些字典的列表,并重新定义了一些常见的字典操作来遍历这个列表,并没有真正的创建字典。 fromcollectionsimportChainMapz = ChainMap(x, y)print(z) # 字典的常用操作不变 print(list(z.
企鹅号小编
2018/02/27
2.2K0
如何快速合并两个字典
git仓库管理
参考 https://www.cnblogs.com/youcong/p/10809085.html
悟空聊架构
2020/02/13
9110
git镜像仓库
有时候我们会把一些仓库放到本地,当他更新的时候,可以使用简单命名更新他。 不是所有时间我们都有网,所以把远程的仓库作为镜像,可以方便我们查看 普通的git clone不能下载所有分支,想要简单的git clone所有分支,可以用镜像方法
林德熙
2022/08/04
1.2K0
git 合并策略
不清楚 git 冲突的表示方法,不了解 git 的合并原理,不知道 git 解冲突的多种策略。即便如此,大多数人依然可以正常使用 git 完成合并、拉取操作,并且解一些冲突。这得益于 git 默认情况下的合并方式可以处理大多数情况下的正常合并。
walterlv
2020/02/10
2.2K0
git镜像仓库
有时候我们会把一些仓库放到本地,当他更新的时候,可以使用简单命名更新他。 不是所有时间我们都有网,所以把远程的仓库作为镜像,可以方便我们查看 普通的git clone不能下载所有分支,想要简单的git clone所有分支,可以用镜像方法
林德熙
2018/09/19
3.5K0
git镜像仓库
点击加载更多

相似问题

如何统计git仓库中的行数?

2879

如何回滚(重置)Git仓库到特定的提交?

2867

外网是否能进入我们的git仓库?

0236

在Windows上忽略Git仓库中的目录?

2514

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

21.1K
相关问答用户
新浪微博 | 高级总监擅长4个领域
到家集团 | 技术VP擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档