博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git-合并子树
阅读量:4948 次
发布时间:2019-06-11

本文共 2618 字,大约阅读时间需要 8 分钟。

    很多时候 ,"子模块"(submodule)功能不能满足手边的任务。例如,合并多个仓库到一个仓库时,要维护每一个仓库的历史记录。对于这种情况,子树(subtree)合并策略是一个更好的解决方案。

建立仓库,完成第一个合并

在这个例子中,我们建立一个空的“父”仓库,合并别的仓库作为它的子路径。

首先,建立一个空的仓库:

$ mkdir test$ cd test$ git init# Initialized empty Git repository in /Users/tekkub/tmp/test/.git/$ touch .gitignore$ git add .gitignore$ git commit -m "initial commit"# [master (root-commit) 3146c2a] initial commit#  0 files changed, 0 insertions(+), 0 deletions(-)#  create mode 100644 .gitignore

现在,子树合并 到仓库的/cork目录下:

$ git remote add -f cork git://github.com/TekNoLogic/Cork.git# Updating cork# warning: no common commits# remote: Counting objects: 1732, done.# remote: Compressing objects: 100% (750/750), done.# remote: Total 1732 (delta 1086), reused 1558 (delta 967)# Receiving objects: 100% (1732/1732), 528.19 KiB | 621 KiB/s, done.# Resolving deltas: 100% (1086/1086), done.# From git://github.com/tekkub/cork#  * [new branch]      lastbuffed -> cork/lastbuffed#  * [new branch]      lock_n_mount -> cork/lock_n_mount#  * [new branch]      master     -> cork/master#  * [new branch]      nothing_to_see_here -> cork/nothing_to_see_here$ git merge -s ours --no-commit cork/master# Automatic merge went well; stopped before committing as requested

接下来,我们合并到仓库的panda/目录下

$ git remote add -f panda git://github.com/TekNoLogic/Panda.git# Updating panda# warning: no common commits# remote: Counting objects: 974, done.# remote: Compressing objects: 100% (722/722), done.# remote: Total 974 (delta 616), reused 399 (delta 251)# Receiving objects: 100% (974/974), 189.56 KiB, done.# Resolving deltas: 100% (616/616), done.# From git://github.com/tekkub/panda#  * [new branch]      master     -> panda/master#  * [new branch]      transmute  -> panda/transmute$ git merge -s ours --no-commit panda/master# Automatic merge went well; stopped before committing as requested$ git read-tree --prefix=panda/ -u panda/master$ git commit -m "Subtree merged in panda"# [master 726a2cd] Subtree merged in panda

最后,我们将要把tekkub/cork的子目录modules/合并到仓库的cork2/目录结构下。

$ git merge -s ours --no-commit cork/master# Automatic merge went well; stopped before committing as requested$ git read-tree --prefix=cork2/ -u cork/master:modules$ git commit -m "Subtree merged in cork/modules"# [master f240057] Subtree merged in cork/modules

目录结构为

Mode LastWriteTime Length Name

---- ------------- ------ ----
d---- 2013/3/13 12:45 cork
d---- 2013/3/13 12:50 cork2
d---- 2013/3/13 12:48 panda
----- 2013/3/13 12:36 0 .gitignore

 

获取修改

如果将来被合并的仓库中有修改,你只要简单的使用-s subtree标记获取他们的修改。

$ git pull -s subtree panda master

 

原文链接: 

转载于:https://www.cnblogs.com/Mingxx/archive/2013/03/13/2957483.html

你可能感兴趣的文章
Oracle下建立dblink时的权限问题
查看>>
chrome浏览器,调试详解,调试js、调试php、调试ajax
查看>>
jQuery Ajax 回顾
查看>>
点在多边形内算法,C#判断一个点是否在一个复杂多边形的内部
查看>>
如何在移动设备上搭建服务器承载自己的全景作品?
查看>>
iOS SQLite3数据库操作
查看>>
除了 iOS 和 Android,世界第三大移动系统是什么?
查看>>
35.7. FAQ
查看>>
深搜算法实例:老鼠走迷宫(一)
查看>>
VMWare网络设置的3中方式(转)
查看>>
支付这条线上 谁在赚钱谁在哭?
查看>>
机器学习之朴素贝叶斯分类
查看>>
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
【设计模式系列】--抽象工厂
查看>>
JqueryValidate 动态添加验证
查看>>
双活数据中心的架构
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
先行者长虹佳华超融合市场沙龙在京举行
查看>>
建立备份策略的重要性
查看>>
小白用户如何轻松上云 -我的轻量应用服务器探索记
查看>>