使用分支就是說(shuō)你可以從開(kāi)發(fā)主線上分離開(kāi)來(lái)覆获,然后在不影響主線的同時(shí)繼續(xù)工作墩新。Git在創(chuàng)建倉(cāng)庫(kù)的時(shí)候贸弥,
master
是默認(rèn)分支『Tǎ可以在其他分支上進(jìn)行開(kāi)發(fā)绵疲,完成后再將它們合并到主分支上。
那么臣疑,分支在實(shí)際中有什么用呢盔憨?
如果一個(gè)功能你完成了一半,如果立即提交可能會(huì)導(dǎo)致別人無(wú)法工作讯沈。如果完成后統(tǒng)一提交有可能丟失每天的進(jìn)度存在風(fēng)險(xiǎn)郁岩。此時(shí),我們需要分支:你創(chuàng)建了一個(gè)屬于自己的分支,別人看不到问慎,還繼續(xù)在原來(lái)的分支上正常工作萍摊,而你在自己的分支上工作,想提交就提交蝴乔,直到開(kāi)發(fā)完畢后记餐,再一次性合并到原來(lái)的分支上驮樊。
這樣薇正,既安全,又不影響別人囚衔。
分支工作原理
- HEAD是當(dāng)前分支的指針(初始指向master)
- 分支的創(chuàng)建過(guò)程:添加新的指針挖腰,用HEAD指向它,指針隨著自己的提交而不斷改變(master不變)
- 分支的合并過(guò)程:用master指向 分支指針指向的位置 即可练湿,所以合并非澈锫兀快
- 分支的刪除:刪除分支指針
想要詳細(xì)了解分支的工作過(guò)程,猛戳這里肥哎。
創(chuàng)建分支
使用git branch
命令創(chuàng)建分支:
git branch newbranch
切換到newbranch
分支:
git checkout newbranch
上述兩句命令可由git checkout -b
命令取代:
? Git git:(master) git checkout -b newbranch
Switched to a new branch 'newbranch'
查看分支
使用git branch
命令查看當(dāng)前分支:
? Git git:(newbranch) git branch
master
* newbranch
*
表示當(dāng)前分支辽俗。
分支上的提交
在分支上的工作與在master
上操作一樣,參考這里篡诽。
? Git git:(newbranch) ? git status
On branch newbranch
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.MD
no changes added to commit (use "git add" and/or "git commit -a")
? Git git:(newbranch) ? git add .
? Git git:(newbranch) ? git commit -m "branch"
[newbranch 3902e54] branch
1 file changed, 2 insertions(+)
在分支上的所有操作崖飘,在未合并前master
上是不可見(jiàn)的。分支上的文件杈女,master
不可見(jiàn)朱浴。
? Git git:(newbranch) git checkout master
Switched to branch 'master'
切換回master
后查看文件,發(fā)現(xiàn)在分支上的操作是看不見(jiàn)的达椰。
分支合并
使用git merge
命令合并指定分支到當(dāng)前分支上:
? Git git:(master) git merge newbranch
Updating 69611e0..3902e54
Fast-forward
README.MD | 2 ++
1 file changed, 2 insertions(+)
? Git git:(master)
分支合并后翰蠢,發(fā)現(xiàn)在分支上的修改(提交)可見(jiàn)了。
刪除分支
合并完成啰劲,我們可以刪除分支:
? Git git:(master) git branch -d newbranch
Deleted branch newbranch (was 3902e54).
? Git git:(master) git branch
* master
此時(shí)查看分支梁沧,就只剩下master
了。
因?yàn)閯?chuàng)建蝇裤、合并和刪除分支非惩⒅В快(指針操作),所以Git鼓勵(lì)使用分支完成某個(gè)任務(wù)猖辫,合并后再刪掉分支酥泞,這和直接在master分支上工作效果是一樣的,但過(guò)程更安全啃憎。
總結(jié)
查看分支:git branch
創(chuàng)建分支:git branch <branch-name>
切換分支:git checkout <branch-name>
創(chuàng)建+切換分支:git checkout -b <branch-name>
合并某分支到當(dāng)前分支:git merge <branch-name>
刪除分支:git branch -d <branch-name>