版本管理之 git 解決沖突
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
git 要解決的沖突,是由分支合并帶來(lái)的。 合并(Merge)是將分支 A 的更改合并到分支 B 的過(guò)程。 合并場(chǎng)景假如我們有 master 分支,然后有基于 master 分支創(chuàng)建出來(lái)的 develop 分支。 從 develop 分支合并到 master 分支的場(chǎng)景有以下兩種情況:
合并沖突發(fā)生在上述的第二個(gè)場(chǎng)景里,當(dāng)同一個(gè)文件在兩個(gè)分支上都被修改了。
出現(xiàn)沖突的時(shí)候,就需要手動(dòng)解決沖突并提交合并結(jié)果。 合并的類(lèi)型合并的結(jié)果有兩種,一是直接合并,不產(chǎn)生新的提交。二是有沖突并解決了沖突,它會(huì)產(chǎn)生新的提交,這里的提交內(nèi)容就是合并沖突修改。 這里有三種類(lèi)型的合并:前進(jìn)合并(fast-ford)、三方合并(three-way merge)和變基合并(Rebase)。 快速前進(jìn)合并(fast-forward)是最簡(jiǎn)單的合并方式。 還是以上述 master 分支和 develop 分支為例來(lái)說(shuō)明。 當(dāng) master 分支沒(méi)有新的提交時(shí),Git 只需將 master 分支的指針移動(dòng)到 develop 分支的最新提交即可。這種合并不會(huì)產(chǎn)生新的合并提交。 三方合并(three-way merge)是指當(dāng) master 分支和 develop 分支都有新的提交時(shí),Git 會(huì)進(jìn)行三方合并。 這種合并會(huì)創(chuàng)建一個(gè)新的合并提交,包含兩個(gè)分支的更改。
變基合并(Rebase)是將 develop 分支的提交應(yīng)用到 master 分支的基礎(chǔ)上,從而避免創(chuàng)建合并提交。 這種方式可以保持提交歷史的線(xiàn)性,但可能會(huì)導(dǎo)致沖突需要手動(dòng)解決。
合并策略在進(jìn)行合并時(shí),還能使用不同的合并策略來(lái)控制合并的行為。 常見(jiàn)的合并策略包括:
解決合并沖突的辦法解決合并沖突需要手動(dòng)干預(yù),基本上可以按以下步驟進(jìn)行:
當(dāng)合并沖突發(fā)生時(shí),Git 會(huì)提示哪些文件存在沖突。可以使用
打開(kāi)沖突文件,可以看到?jīng)_突部分被標(biāo)記為 這些標(biāo)記分別表示當(dāng)前分支的更改、分隔符和合并分支的更改。
根據(jù)實(shí)際情況,手動(dòng)編輯沖突文件,保留需要的更改并刪除沖突標(biāo)記。
解決沖突后,使用
最后,使用
避免合并沖突在團(tuán)隊(duì)協(xié)作里,頻繁出現(xiàn)合并沖突多少會(huì)影響開(kāi)發(fā)效率,以及團(tuán)隊(duì)士氣。 所以我們?cè)诠ぷ鲿r(shí)會(huì)盡量避免沖突的發(fā)生。 它的策略核心是盡可能減少同時(shí)對(duì)同一個(gè)文件的修改,以及盡可能減少單次提交的代碼量。
總結(jié)
該文章在 2024/12/4 17:24:57 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |