用 Git Subtree 在多个 Git 项目间双向同步子项目

                 用 Git Subtree 在多个 Git 项目间双向同步子项目

     大家在实际的git项目开发中有没有遇到过这么一种情况,就是一个git仓库的某一个目录独立一个新的 git 仓库,但又希望能够保留这部分代码的历史提交记录,那么这个时候就可以使用Git Subtree的功能了。下面我会以一个实例来进行相关的介绍。

 

一.什么时候需要 Subtree 


1、当多个项目共用同一坨代码,而这坨代码跟着项目在快速更新的时候 
2、把一部分代码迁移出去独立为一个新的 git 仓库,但又希望能够保留这部分代码的历史提交记录。

二.Git Subtree具体实例说明 

假设,你要在各个项目里的idh.code/xxx这个目录对 git@172.16.2.199:xxx这个项目做Subtree

1.首先必须确保各个项目已经添加xxx这个 remote(关于remote是什么可以看这里):

git remote add xxx git@172.16.2.199:xxx

2.将xxx添加到各个项目里

git subtree add --prefix=idh.code/xxx xxx master --squash

其中--squash的使用大家可以百度搜索一下

3.各项目更新xxx代码的方法:

git subtree pull --prefix=idh.code/xxx xxx master --squash

4.各项目提交xxx代码的方法:

git subtree push --prefix=idh.code/xxx xxx xxx/xxx_xxxx

这会在远程的xxx的仓库里生成一个叫 xxx/xxx_xxxx 的的分支,包含了你过去对idh.code/xxx所有的更改记录(本人实际开发工作中,只需要pull xxx分支的所以不会进行这一步操作)

5.把xxx/xxx_xxxx分支更新并合并到master并提交

这样其他工程就可以更新到你提交的代码了。

 

具体的脚本如下:


git remote rm xxx
git remote add xxx git@172.16.2.199:xxx
if [ ! -d "idh.code/xxx" ];then
    git subtree add --prefix=idh.code/xxx xxx master --squash
else
    echo "xxx directory exist!"
    git subtree pull --prefix=idh.code/xxx xxx master --squash
fi

参考的博客文章如下:

https://www.cnblogs.com/jeffkuang/articles/5653794.html

https://blog.csdn.net/kinginblue/article/details/78290955

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值