上一篇版本控制系統(tǒng)Git 進(jìn)階(一)
產(chǎn)生沖突
- 創(chuàng)建分支featureA與分支featureB(注:還不懂怎么創(chuàng)建分支的請(qǐng)查看版本控制系統(tǒng)Git 進(jìn)階(一))屡久,然后使用
git branch
查看分支列表拷呆。
- 使用命令
git checkout featureA
切換到featureA,并在git.txt 添加“add featureA”,然后commit 在此分支上厢拭。 - 切換到主干分支master,并且使用
git merge featureA
,把featureA分支合并到master分支上杆怕。
解析:上圖 1 + 表示有g(shù)it.txt 有一行添加進(jìn)來(lái)捷绑。使用cat git.txt
可以查看添加的內(nèi)容躬贡,此處就不截圖蓬豁。 - 切換到分支featureB上绰咽,使用命令
cat git.txt
查看git.txt的內(nèi)容,此時(shí)是空的地粪,在git.txt上第一行添加內(nèi)容add featureB,再commit到分支上取募。 -
切換到主分支master上,合并分支到featureB蟆技,看看提示。
解析:提示有沖突质礼。打開(kāi)git.txt看看有什么內(nèi)容。
解析下砰粹,
=======
以上部分是當(dāng)前HEAD的內(nèi)容,一下部分是featureB的內(nèi)容造挽。我們理想的狀態(tài)是這樣但是碱璃,為什么會(huì)那樣刽宪?回想下,在分支featureA上添加內(nèi)容到git.txt上時(shí)圣拄,是在第一行上添加的嘴秸,而在分支featureB上添加內(nèi)容到git.txt也是在第一行上的,合并的時(shí)候庇谆,出錯(cuò)了,第二次合并的時(shí)候饭耳,發(fā)現(xiàn)第一行有內(nèi)容了,那么在fetureB的內(nèi)容該放在哪里并不知道纲酗。此時(shí)應(yīng)該解決沖突,手動(dòng)去解決觅赊。
解決沖突
解決沖突很簡(jiǎn)單,打開(kāi)git.txt編輯好后直接提交到master分支吮螺。使用git status
查看沖突解決了。
刪除分支
featureA分支與featureB分支做的功能已經(jīng)完成萝风,并且也合并到主分支中紫岩,那么就應(yīng)該刪除這兩個(gè)分支,這是個(gè)良好的習(xí)慣卿拴,使用命令git branch -d <name>
壓縮歷史 git rebase -i
在合并特性分支之前梨与,如果發(fā)現(xiàn)已提交的內(nèi)容中有些許拼寫(xiě)錯(cuò)誤等文狱,不妨提交一個(gè)修改,然后將這個(gè)修改包含到前一個(gè)提交之中瞄崇,壓縮成一個(gè)歷史記錄。
-
創(chuàng)建一個(gè)分支featureC
作為featureC分支的功能實(shí)現(xiàn)等浊,在git.txt,添加一行文字并且故意是寫(xiě)錯(cuò)的。
其實(shí)應(yīng)該寫(xiě)“add featureC”,故意寫(xiě)錯(cuò)成featuuuC摹蘑,然后使用命令
git commit -am "add featureC"
提交到分支上。注意:此刻我是直接使用git commit -am
,代替了 先add ,再commit撒踪。
- 修改拼寫(xiě)錯(cuò)誤
修改剛剛的featuuuC為featureC,然后使用git diff
大渤,查看修改后的差別
然后提交。
- 更改歷史
實(shí)際上耕捞,你可能不需要在歷史記錄中看到這兩天記錄,因?yàn)槟闾嵩绨l(fā)現(xiàn)了錯(cuò)誤具篇,并作出改正凌埂,所以可以把這兩次提交的記錄壓縮成一次。使用命令git rebase - i HEAD~2
進(jìn)入到編輯器中瞳抓。
接下來(lái)孩哑,將ec1a087 fix這條歷史記錄壓縮到83e04a0這條記錄中,只需要將ec1a087 fix 左側(cè)的pick改為fixup,然后保存退出横蜒。
分支featureC的功能完成,這時(shí)候也應(yīng)該刪除了仅炊。