一、倉庫合並,倉庫搬遷
倉庫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