GIT项目管理工具(part10)--分支管理
本系列BLOG為鄙人學(xué)習(xí)GIT時的學(xué)習(xí)筆記。前一個知識點引出后一個知識點,后一個例子接著前一個例子。
文章目錄
- 分支管理
- 1.查看分支情況
- 2.創(chuàng)建分支
- 3.切換工作分支
- 4.合并分支
- 5.刪除分支
- 舉個例子11(接例子10)
- 導(dǎo)航
- 目錄
分支管理
定義: 分支即每個人在原有代碼(分支)的基礎(chǔ)上建立自己的工作環(huán)境,單獨開發(fā),互不干擾。完成開發(fā)工作后再進(jìn)行分支統(tǒng)一合并。
我們畫一張圖,解釋一下分支:
1.查看分支情況
git branch #查看本地分支 #------------------ git branch –r #只查看遠(yuǎn)程分支 #------------------ git branch –a #查看所有分支說明: Git Bash輸出中前面帶 * 的分支表示當(dāng)前工作分支.比如【* master】
2.創(chuàng)建分支
git branch [branch_name]說明: 若基于a分支創(chuàng)建b分支,此時b分支會擁有a分支全部內(nèi)容。在創(chuàng)建b分支時最好保持a分支工作區(qū)處于"干凈"狀態(tài)。因為分支創(chuàng)建時,只能copy倉庫區(qū)內(nèi)容,所以如果a分支處于”不干凈”的狀態(tài),則a分支在工作區(qū)未提交的內(nèi)容,b分支copy不過來。
3.切換工作分支
git checkout [branch] #----------------------------------- #創(chuàng)建分支和切換工作分支可以同時操作,即創(chuàng)建并切換分支 git checkout -b [branch_name]4.合并分支
git merge [branch]沖突問題是合并分支過程中最為棘手的問題
若基于a分支,同時創(chuàng)建出了b和c分支。當(dāng)c分支修改完,先和a分支進(jìn)行了合并,那么……
●當(dāng)b分支與a分支合并時,a分支相比于創(chuàng)建分支b時發(fā)生了變化(a分支先和c分支合并,導(dǎo)致自身發(fā)生改變),就會產(chǎn)生沖突
●當(dāng)b分支與a分支合并時,若b和c分支都只添加了新的模塊(文件),這種沖突可以自動解決,只需自己決定commit操作即可。
●當(dāng)b分支與a分支合并時,若b和c分支均修改了同一個模塊(文件),則需要手動解決沖突。
5.刪除分支
git branch -d [branch] #刪除分支 git branch -D [branch] #刪除沒有被合并的分支舉個例子11(接例子10)
首先我們查看分支(本地)情況(git branch):
我們看到,我們只有一個master分支。我們再檢查一下master分支的工作空間是否干凈:
嗯!工作空間clean~
接下來我們再基于master分支,創(chuàng)建Huang分支和Bai分支。
基于我們的master分支,創(chuàng)建分支(git branch [branch_name]):
查看一下分支情況:
好了我們的Huang分支和Bai分支都創(chuàng)建成功了
我們想要切換到Huang分支~可咋整呢?可以用切換工作分支命令(git checkout [branch]):
切換成功!別忘了若某分支前有【*】星號,則表示此分支為當(dāng)前所在分支。
我們在Huang分支下創(chuàng)建一個Huang.txt文件:
查看Huang.txt文件的內(nèi)容:
查看本地倉庫狀態(tài):
可以看到Huang.txt處于未提交狀態(tài)。
我們將工作記錄添加到暫存區(qū),并提交Huang.txt文件到倉庫區(qū),并查看工作區(qū)狀況:
我們再回到master分支,看一下狀況:
查看一下master分支下,工作區(qū)內(nèi)的文件:
我們在Huang分支創(chuàng)建的Huang.txt文件沒有了呢~這也驗證了,各個分支之間完全獨立的說法。
我們現(xiàn)在切換到Bai分支,創(chuàng)建Bai.txt文件,并提交到倉庫區(qū):
我們再切換回master分支,并將Bai分支與master分支合并(git merge [branch]):
我們查看一下master分支下,工作區(qū)內(nèi)的文件:
嗯!Bai.txt被合并到master分支下了~
我們再將Huang分支與master分支合并:
我們不需要管前兩個錯誤,這主要是我們使用Editplus出現(xiàn)的問題。我們只需要看最后一行:【Not committing merge; use ‘git commit’ to complete the merge】,表示【未提交合并,使用’git commit’完成此次合并】。==為啥未提交合并呢?==這是因為,在我們將Huang分支與master分支合并時,發(fā)現(xiàn)master分支和以前不太一樣了。==為啥master分支和以前不一樣了呢?==這是因為,在master分支與Bai分支合并時,master分支添加了一個Bai.txt文件。==那么我們應(yīng)該怎樣完成合并呢?==這個問題很好解決,因為Bai分支和Huang分支,都只是分別添加了一個獨立的模塊,并沒有對相同的模塊進(jìn)行操作,所以我們只要手動將Huang要提交的獨立模塊commit到倉庫區(qū)就可以了。
備注:這種問題就是產(chǎn)生了沖突。
我們查看一下本地倉庫狀態(tài):
果然,Huang.txt的工作記錄被添加進(jìn)了暫存區(qū),但并沒有提交進(jìn)倉庫區(qū)。
我們手動將其,提交進(jìn)倉庫區(qū):
我們再看一下master分支下,工作區(qū)內(nèi)的文件:
合并成功啦~~
==注意!==這種Huang分支和Bai分支,因為分別創(chuàng)建獨立模塊,而在與master合并時,產(chǎn)生的沖突是容易解決的;但如果我們的2個分支在同一個模塊中,分別做各自的修改,則在合并時,產(chǎn)生的沖突是不太好解決的。
我們切換到Bai分支,并在data01.txt中進(jìn)行更改:
備注:data01.txt文件中,【Bai模塊】一詞寫錯,應(yīng)該是【Bai分支】。
我們add文件操作記錄并commit文件:
再切換到Huang分支,并也在data01.txt中進(jìn)行更改:
我們add文件操作記錄并commit文件:
回到master分支,并將Bai分支與master分支合并:
我們發(fā)現(xiàn)產(chǎn)生了沖突,我們看一下master的本地倉庫狀態(tài):
發(fā)現(xiàn)文件修改記錄已經(jīng)被add進(jìn)了暫存區(qū),但是還沒有commit進(jìn)倉庫區(qū)。我們先不急著commit,先看一下master中的data01.txt文件:
嗯!在Bai和master合并后,Bai分支中,對data01.txt更改的內(nèi)容,添加進(jìn)master分支的data01.txt模塊了。
我們現(xiàn)在將data01.txt文件commit進(jìn)倉庫區(qū):
好的~那我們現(xiàn)在再將Huang與master進(jìn)行合并會怎樣呢?
我們進(jìn)行Huang與master的合并操作,并且查看master的本地倉庫狀態(tài):
由劃紅線的結(jié)果可知,自動合并失敗。并且對data01.txt進(jìn)行修改的記錄,沒有add進(jìn)暫存區(qū)。這是因為,我們的2個分支在同一個模塊data01.txt中進(jìn)行了修改,git無法幫助我們解決沖突,需要我們?nèi)藶榻鉀Q沖突。
我們看一下data01.txt文件:
由data01.txt顯示的結(jié)果可知,HEAD以下->分割線,顯示的是data01.txt當(dāng)前的樣子。而Huang以上->分割線,顯示的是我們想要向data01.txt中添加的東西。此時,我們應(yīng)該經(jīng)過仔細(xì)的判斷,自己做出選擇。
這里我選擇倆都保留:
手動修改完后,我們再將data01.txt進(jìn)行add和commit操作,才能完成合并:
若此時我們不需要Bai分支了,我們可以刪除分支(git branch -d [branch]):
則此時,我們完成了刪除Bai分支的操作。
導(dǎo)航
上一節(jié):保存工作區(qū)
目錄
簡介及概念
初始配置
初始化倉庫及查看倉庫狀況
提交文件暫存記錄及同步文件至本地倉庫
查看commit 日志記錄
放棄工作區(qū)文件修改及從倉庫區(qū)恢復(fù)文件
移動或者刪除文件
版本控制
保存工作區(qū)
分支管理
這個系列暫時完結(jié)啦~
總結(jié)
以上是生活随笔為你收集整理的GIT项目管理工具(part10)--分支管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于凯的网名100个
- 下一篇: PIP的使用