/ git

git子树合并

公司的站点用的都是内部开发的一个框架,之前全部都是通过submodule的方式引入到具体项目中,但在使用过程中发现submodule十分不方便,从远端拉取更新时,并不会主动更新submodule的目录(除非加上–recurse-submodules参数),还得再手动执行一次git submodule update,如果忘记更新submodule,之后提交变更又会把submodule给退回旧版本,很容易出问题。

之前在参与progit翻译的时候看到git还有一个子树合并的功能,也能够实现在一个git仓库中引入另一个git仓库。

于是参照progit中的步骤,首次将框架的仓库引入到项目仓库中是OK的,但是从框架仓库拉取更新时报错

Automatic merge failed; fix conflicts and then commit the result.

于是搜索了下,发现stackoverflow上也有人遇到相同的问题,应该是progit的错误(也可能是git新版本修改了子树合并的操作),按照这个步骤操作就可以了。

有一点需要注意的是,如果git配置了pull.rebase=true,在pull子树更新时需要加上参数–rebase=false,否则会出错。(没有具体了解是什么原因,有兴趣的同学自己探索一下)

git子树合并
Share this