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