一、git subtree 与submodule 有类似的作用,可以实现仓内仓,但submodule的子仓是一个链接,subtree是把子仓的copy,类似与新增一个子仓branch .在父仓中几乎感觉不到子仓的存在,只有需要将子仓代码做同步时,才用到subtree的命令。
二、增加一个子仓
git subtree add -P 文件夹名 子仓git路径 branch名
git subtree pull -P 文件夹名 子仓git路径 branch名
例 :git subtree add -P test1 ssh://username@ip:port/test1.git master
也可以一步完成git subtree add -P 文件夹名 -f 子仓git路径 branch名 -f代表fetch
这样父仓库就多了个文件夹,并将子仓的commit 一起同步过来了,
将这个子仓push 到父仓
git push
三、修改新增文件夹名内的内容上传到父仓,例如test1内新增1.txt
就像普通仓库一样,git add test1/1.txt git commit -m "test" git push
此时ssh://username@ip:port/test1.git内的内容没有变化,
如果需要将这个更新同步到test1.git,执行git subtree push -P test1 ssh://username@ip:port/test1.git master
四:从子仓同步代码到subtree
即:从test1.git 同步更新到test1文件夹
git subtree pull -P test1 ssh://username@ip:port/test1.git master
然后将test1文件夹内更新同步到父仓,执行git push
五:删除subtree 子仓
git rm -r 文件夹 其实就和普通文件夹删除一样
然后commit ,push
说白了就是subtree比直接copy后提交多了commit 记录和与原子仓同步代码的功能
https://blog.csdn.net/kinginblue/article/details/78290955
参考:https://www.jianshu.com/p/3096069e9b72