天津網(wǎng)站建設(shè)定制公司免費(fèi)seo網(wǎng)站推廣在線觀看
愿所有美好如期而遇
目錄
理解分支
創(chuàng)建分支
切換分支
合并分支
刪除分支
合并沖突
分支管理策略
理解分支
每次提交master都會(huì)前進(jìn)一步,隨著不斷提交,master分支的線越來(lái)越長(zhǎng),而HEAD指向哪條分支就是當(dāng)前工作的分支。
master分支是我們創(chuàng)建本地倉(cāng)庫(kù)時(shí)系統(tǒng)默認(rèn)創(chuàng)建的分支。
創(chuàng)建分支
git branch 查看當(dāng)前所有分支
這個(gè)*表示HEAD指向的分支,也就是我們當(dāng)前工作的分支
git branch name 創(chuàng)建一個(gè)新的分支
?我們發(fā)現(xiàn)新建的dev分支與master分支都指向最新的提交
切換分支
那么如何切換到dev分支下進(jìn)行開(kāi)發(fā)呢?
git checkout 分支名字
現(xiàn)在我們?cè)谶@個(gè)分支下對(duì)文件進(jìn)行修改,添加一句話“分支dev”
?添加并提交
現(xiàn)在我們切換回master分支,看看master分支有沒(méi)有被影響。
沒(méi)有受到任何影響,我們?cè)賮?lái)看他們的指向
發(fā)現(xiàn)指向已經(jīng)不同了。
我們要想在master分支上看見(jiàn)dev上的提交怎么辦呢?--->合并分支
合并分支
為了能在master分支上看見(jiàn)dev分支上的提交,我們需要將dev分支合并到master分支上。
git merge 分支名
需要注意的是,要將dev分支合并到master分支上,需要先切換到master分支上?。
Fast-forward模式,快進(jìn)模式,合并時(shí),master直接指向dev的當(dāng)前提交
我們還可以來(lái)看看他的視圖。
當(dāng)然,也不是每次合并時(shí)都能使用快進(jìn)模式,我們后面會(huì)說(shuō)到其他的合并方式。
刪除分支
在我們合并了dev分支后,dev分支也就沒(méi)用了,所以我們刪掉他
git branch -d 分支名字
我們已經(jīng)完成了合并,所以此時(shí)刪除分支時(shí)可以的。
合并沖突
在實(shí)際分支合并時(shí),并不是每次都能合并成功的,有時(shí)候會(huì)遇到代碼沖突的問(wèn)題
我們創(chuàng)建一個(gè)新的分支并切換至該分支
git checkout -b 新的分支名字? ?一條指令一步到位
再切換至master分支做修改。
兩個(gè)分支都對(duì)原有舊版本代碼做了修改并提交,現(xiàn)在我們將newdev與master合并
這些符號(hào)之間的代碼就是沖突的代碼,我們只能手動(dòng)去除沖突,保留一個(gè)
再次添加提交
我們此時(shí)的模式是--no -ff,也就是非快進(jìn)模式
接著,我們刪除分支
分支管理策略
通常我們合并分支時(shí),如果可能,編譯器通常會(huì)采用fast-forward模式,合并后結(jié)果是這樣
master直接指向dev指向的最新提交。
但在合并沖突部分,我們也看到通過(guò)解決沖突問(wèn)題,會(huì)在進(jìn)行一次添加提交,得到的最終狀態(tài)是:
這樣的好處是,從分支歷史上就可以看出分支信息。
我們已經(jīng)刪除了dev和newdev分支,但是我們?nèi)匀豢梢钥吹剿麄兊倪^(guò)往信息,盡管我們刪除了newdev分支,但是我們?nèi)匀豢梢钥吹浆F(xiàn)在的master分支是由其他分支合并而得到的。
編譯器支持我們強(qiáng)制禁用fast-forward模式,那么在merge時(shí)會(huì)生成一個(gè)新的commit,這樣我們就可以從分支歷史上看出分支信息。、
我們?cè)俅涡陆ㄒ粋€(gè)分支測(cè)試--no -ff模式的合并
別忘了切換到master分支
所以在合并分支時(shí),加上--no-ff參數(shù)就可以用撲通模式合并,合并后的歷史有分支,能看出來(lái)做過(guò)合并,而fast-forward模式就看不出來(lái)曾經(jīng)做過(guò)合并。