更新時(shí)間:2022-06-08 10:32:42 來源:動(dòng)力節(jié)點(diǎn) 瀏覽5214次
git 最強(qiáng)大的功能之一是分支創(chuàng)建和合并操作。Git 允許用戶創(chuàng)建一個(gè)新分支并將它們合并到開發(fā)代碼中。此功能通過鼓勵(lì)更具體、更小和更精細(xì)的任務(wù)來改進(jìn)多個(gè)項(xiàng)目的開發(fā)流程工作流。
在本教程文章中,我們將討論將 git 功能分支合并到 master 的方法。
git 的主要優(yōu)點(diǎn)是它的分支系統(tǒng)。GIT 的所有魔力都在這些分支上!主分支將攜帶所做的所有修改。因此,目標(biāo)不是直接在這個(gè)分支上進(jìn)行修改,而是在其他分支上進(jìn)行修改,并經(jīng)過各種測(cè)試,將它們集成到主分支上。
其merge目的是合并feature和master分支到保留所有相關(guān)分支內(nèi)容的提交。Git 實(shí)現(xiàn)了這一點(diǎn),即所謂的merge commit. 這也意味著merge操縱多個(gè)分支。
當(dāng)分支已經(jīng)分歧時(shí),即一個(gè)不是另一個(gè)的祖先。Git 可以通過進(jìn)行具有多個(gè)父項(xiàng)的新附加提交來實(shí)現(xiàn)合并。在下圖中,如果您在不同的分支中有一個(gè)提交D和一個(gè)提交F,并且混合了這些分支(通過git merge),則結(jié)果是一個(gè)提交G,其父項(xiàng)是Band E。
A --- B --- C --- D ---
\ \
\ G ← master
E --- F --------- /
在上圖中,G是一個(gè)新創(chuàng)建的提交,完全由 git 創(chuàng)建。這個(gè)提交有兩個(gè)父母!他們有一個(gè)命令:
第一個(gè)父母是D,這是master以前的。
第二個(gè)父母是F,這是feature-1以前的。
這種類型的提交稱為合并提交。
現(xiàn)在切換回我們的存儲(chǔ)庫示例并將新創(chuàng)建的feature-1分支合并到master
首先,檢查主分支。
$ git checkout master
現(xiàn)在,將遠(yuǎn)程 master 更改拉到本地master。
$ git pull origin master
From github.com:repo/demorepo
* branch master -> FETCH_HEAD
Updating 17cc6b4..a802b6b
Fast-forward
file1.txt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
之后,使用以下命令將功能分支合并feature-1到當(dāng)前活動(dòng)的分支。
$ git merge feature-1
如果此步驟成功完成,分支將與分支完全feature-1合并。master但是,如果 git 無法自動(dòng)解決這些合并沖突,它將失敗并出現(xiàn)合并沖突錯(cuò)誤。
這是一個(gè)非常典型的場(chǎng)景;當(dāng)兩個(gè)分支修改文件的同一部分并且 git 無法解析要使用的部分時(shí),可能會(huì)發(fā)生這種情況。這正是我們的示例所發(fā)生的。這種情況通過 git 如下所示。
Auto-merging file1.txt
CONFLICT (content): Merge conflict in file1.txt
Automatic merge failed; fix conflicts and then commit the result.
每當(dāng) git 遇到?jīng)_突時(shí),它會(huì)添加<<<<<<<&=======以突出顯示導(dǎo)致沖突的部分,這需要手動(dòng)解決。
一旦決定將哪個(gè)部分保留在文件的最終主版本中,個(gè)人必須刪除不相關(guān)的代碼(包括沖突指示符)。最后,將更改推送到遠(yuǎn)程分支,如下所示。
$ git add .
$ git commit -am "resolving the mergeconflict"
[master 1acce69] resolving the mergeconflict
$ git push
這樣feature-1分支成功合并到遠(yuǎn)程master。
接下來,我們將使用以下命令再次驗(yàn)證分支歷史記錄。
git log --all --decorate --oneline --graph
我們可以驗(yàn)證 gitmerge已經(jīng)創(chuàng)建了一個(gè)Merge Commitwith commit-id1acce69來合并feature-1分支origin/master。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743