一、仓库合并,仓库搬迁
仓库1: first1 <---------- 2 <---------- 3 <------------ 4 <---------------8
仓库2:first1 <---------- 2 <---------- 3 <------------5 <---------- 6 <---------- 7
这两个仓库在前3次提交一样,之后分别进行开发,现在要把仓库2合并到仓库1
1、进入仓库1
git remote add old_cnstream git@172.10.80.76:video/cnstream.git
为仓库1添加一个远程仓库old_cnstream,这个仓库链接的是仓库2的远程
2、下载仓库
git fetch old_cnstream
此时会将远程仓库2下载下到本地
3、将仓库2需要合并的分支切到本地
git checkout -b old_cnstream_master old_cnstream/master
4、将仓库1需要合并的分支切出(如果在master的话)
5、切到仓库1相要合并进入的分支 new_master
6、现在处在 仓库1 new_master ,将old_cnstream_master合并到仓库1
git merge old_cnstream_master
二、子仓库
cnstream仓库与easydk为独立仓库,现在cnstream要包含easydk为子仓库,cnstream/easydk
1、子仓库的添加
git submodule add <url> <path>
url为子仓库的路径,path为仓库放的目录。
2、子仓库的使用
git submodule update --init --recursive
默认的子仓库无内容,需要执行上面命令进行下载。
3、子仓库版本的更新
需要修改两个地方,第一在cnstream目录下.gitmodules修改 url 和branch,这里指定子仓库的地址和分支;第二切到子仓库easydk下,checkout 到想要的easydk版本
完成后将 .gitmodules 和 easydk进行commit
4、子仓库更新到默认
cd到上一级目录
git submodule update --init --recursive
三、提交合并
想要把分支v2.0的提交 38361a55 提交到分支v3.0
git checkout v3.0分支
git cherry-pick 38361a55 #commit id