Git 的子树合并和子树拆分 可以通过 Git 的 su btree 合并策略实现分支到目录的跟踪,之前我也是一知半解
这次在准备书稿过程,总算是搞明白了,也发现我在写 Gistore 时可以使用更好的算法,有时间我再改进 gistore 吧
下面是我书稿中的部分内容: 5
5 子树合并 使用子树合并,同样可以实现在一个项目中引用其它项目的数据
但是和子模组方式不同的是,使用子树合并模式,外部的版本库整个复制到本版本库中并建 立跟踪关联
使用子树合并模型,使得对源自外部版本库的数据的访问和本版本库数据的访问没有区别,也可以对其进行本地修改,并且能够通过子树合并的方式将 对源自外部版本库的改动和本地的修改相合并
1 引入外部版本库 为演示子树合并,我们需要至少准备两个版本库,一个是将被作为子目录引入的版本库 u til
git ,另外一个是主版本库 main
$ git --git-dir=/path/to/util
git init --bare $ git --git-dir=/path/to/main
git init --bare 在本地检出这两个版本库: $ git clone /path/to/util
git $ git clone /path/to/main
git 我们需要为这两个空版本库添加些数据
非常简单,每个版本库下我们只创建两个文件: Makefile 和 version
当执行 make 命令时显示 version 文件的内容
我们对 version 文件多次提交以建立多个提交历史
别忘记在最后使用 git pu sh origin master 将版本库推送到远程版本库中
Makefile 文件示例如下: all: @cat version 我们之前尝试的 git fetch 命令都是获取同一项目的版本库的内容