使用git merge/cherry-pick合併代碼

git 合併

1. git合併兩個倉庫代碼(主倉庫合併到分支倉庫)

2.將某分支的某次提交合併到另一個分支

3. 將遠程倉庫的某次/幾次提交合併到另一個倉庫

 

1. git合併兩個倉庫代碼(主倉庫合併到分支倉庫)

主倉庫:opsy:master           (倉庫名:branch名)
我的倉庫:my_opsy:master (倉庫名:branch名)

合併步驟:

以下操作步驟均在我的倉庫路徑下。

1.1 在我的倉庫my_opsy:master下,將主倉庫的地址或者本地倉庫路徑添加到自己本地的遠程倉庫中

//git remote add 倉庫名稱 遠程主倉庫地址
~/my_opsy/master$git remote add opsy [email protected]:opsy/code.git

//git remote add 倉庫名稱 遠程主倉庫本地路徑
~/my_opsy/master$git remote add opsy /home/my_user/opsy/master/

現在git remote 一下可以看見本地有兩個遠程倉庫:

:git remote
opsy
origin

1.2 抓取遠程主倉庫數據到本地我的倉庫中

(遠程主倉庫分支必須指向master branch,如果沒有指向,需要執行git checkout -b master來指向)

//git fetch 倉庫名稱
git fetch opsy 

1.3 創建遠程倉庫新的分支master1

這裏將遠程主倉庫的代碼在本地新建一個分支,稍後會將這個分支的代碼和本地代碼merge,這樣也就是將主倉庫代碼和自己倉庫的代碼merge了

git checkout -b master1 opsy/master

1.4 切換到我的倉庫本地分支master

現在本地有兩個分支:1個是之前的master ,這個分支的代碼就是自己倉庫的代碼。1個新增的分支master1 這個是主倉庫的代碼

git checkout master

1.5 合併兩個分支(也就是將兩個倉庫的代碼merge)

//git merge 分支名稱
git merge master1

2. 將某分支的某次提交合併到另一個分支

合併步驟:

2.1 切換到開發分支

git checkout develop

2.2 查看要合併的sha1 id

git log --oneline

2.3 切換回主分支,並將要提交的內容合併到主分支

git checkout master
git cherry-pick xxxxx

xxxxx這裏爲develop開發分支要提交的sha1 id

 

3. 將遠程倉庫的某一次/幾次提交合併到另一個倉庫

這裏舉例兩個遠程倉庫com_bestyii_AAA和com_bestyii_BBB_bd,

將com_bestyii_AAA某一次提交合併到com_bestyii_BBB_bd上邊。

 

合併步驟:

3.1 將主倉庫的代碼添加到自己本地的遠程倉庫中

通過路徑或者git地址,例如

//git remote add 倉庫名稱 路徑
 git remote add com_bestyii_AAA_bj path/to/com_bestyii_AAA

 //git remote add 倉庫名稱 地址
 git remote add com_bestyii_AAA_bj [email protected]:company/com_bestyii_AAA.git

現在git remote 一下可以看見本地有兩個遠程倉庫

com_bestyii_AAA_bj
origin

3.2 抓取倉庫數據到本倉庫中

git fetch com_bestyii_AAA_bj //git fetch 倉庫名稱

通過git branch -a看到倉庫下的所有分支情況

* master
remotes/com_bestyii_AAA_bj/master
remotes/origin/HEAD -> origin/master
remotes/origin/master

3.3 創建一個新的分支bj_master

這一步是將遠程主倉庫的代碼在本地新建一個分支,稍後會將這個分支的代碼和本地代碼merge,這樣也就是將主倉庫代碼和自己倉庫的代碼merge了

 git checkout -b bj_master com_bestyii_AAA_bj/master

3.4 敲 git log 命令,查找需要合併的commit記錄,比如commitID:7fcb3defff;

git log --oneline

3.5 切換到master分支,使用 git cherry-pick 7fcb3defff 命令,就把該條commit記錄合併到了master分支,這只是在本地合併到了master分支

git checkout master //git checkout 分支名

將下面這一次提交合併到本地倉庫
git cherry-pick 7fcb3defff

將下面從sha1 id start 到sha1 id end之間的提交合併到本地分支
git cherry-pick sha1_id_start..sha1_id_end  (不包含start id)
git cherry-pick sha1_id_start^..sha1_id_end (包含start id)

3.6 最後,git push 提交到master遠程,至此,就把bj_master分支的這條commit所涉及的更改合併到了master分支

git push origin/xxx

參考文章:

https://www.bestyii.com/topic/40

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章