原文地址http://www.cnblogs.com/BeginMan/p/3543240.htmlhtml
分支的理念就是分身,就像孫悟空拔出猴毛變出不少跟本身如出一轍的猴子,而後每一個猴子作本身的事情互不干涉,等到全部猴子作完以後,猴子集合來合併勞動成果,而後悟空就把那些猴子猴孫門通通收回了。git
你建立了一個屬於你本身的分支,別人看不到,還繼續在原來的分支上正常工做,而你在本身的分支上幹活,想提交就提交,直到開發完畢後,再一次性合併到原來的分支上,這樣,既安全,又不影響別人工做。安全
Git鼓勵大量使用分支:服務器
命令以下:學習
查看分支:git branch 建立分支:git branch name 切換分支:git checkout name 建立+切換分支:git checkout -b name 合併某分支到當前分支:git merge name 刪除分支:git branch -d name
推薦閱讀廖雪峯的Git教程fetch
產生衝突的方式不少,常見的一種是建立一個分支並修改提交,而後回到主分支在修改提交同一個文件,而後「快速合併分支」就發生衝突了:網站
$ git merge feature1 Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result..net
打開我修改的文件,能夠發現顯示以下:3d
<<<<<<< HEAD 在master上作出修改 ======= 解決衝突 >>>>>>feature1
<<<<<<< HEAD 表示主分支,主分支的修改是:「在master上作出修改」;>>>>>>feature1表示我建立的feature1分支。code
解決辦法就是手動處理衝突,這點跟SVN同樣。處理以後在提交,而後刪除分支便可。
經過廖雪峯的官方網站的git學習,讓我清楚了明白git分支的策略:
在實際開發中,咱們應該按照幾個基本原則進行分支管理:
首先,master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面幹活;
那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;
你和你的小夥伴們每一個人都在dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。
因此,團隊合做的分支看起來就像這樣:
關於no-ff:
上面咱們使用的合併分支是fast forward,這種快速合併的模式,可是有個地方很差的就是不能顯示歷史信息,在之後開發中我不知道有哪些分支曾經合併過,因此最好使用 no-ff:no fast forward的合併方式,這種方式在合併的同時會生成一個新的commit,這樣,從分支歷史上就能夠看出分支信息。
$ git merge --no-ff -m "merge with no-ff" dev
在上一篇博客[git初體驗(二)基礎git文件操做]也總結了git的儲蓄,所謂的儲蓄就是針對如下的狀況:
當你正在開發一個功能時,忽然boss讓你儘快修改一個bug,此時最緊急的是fix bug. 而正開發的功能還沒有完善還不能提交,這個時候就會想到能不能將手頭的工做隔離開,去單單解決bug,而後提交bug,而後在進行手頭工做。
上面的案例就是git儲蓄的出現:
git stash #把當前工做現場「儲藏」起來
開發一個新feature,最好新建一個分支;
若是要丟棄一個沒有被合併過的分支,將丟失掉修改,能夠經過git branch -D name強行刪除。
參考:git建立與管理遠程分支
1.遠程分支就是本地分支push到服務器上的時候產生的。好比master就是一個最典型的遠程分支(默認)
git push origin master
2.隨便建立分支,而後push到服務器就生成了遠程分支
git checkout -b dev # 建立本地dev分支用於開發 git checkout -b bug # 建立本地bug分支用於bug處理 git checkout -b feature # 建立本地feature分支用於新功能開發 git push origin dev # 生成遠程dev分支 git push origin bug git push origin feature
3.遠程分支與本地分支區分。在服務器上拉取特定分支時要指定本地分支名稱:
git checkout --track origin/dev #注意該命令因爲帶有--track參數,因此要求git1.6.4以上! 這樣git會自動切換到develop分支。
4.同步本地遠程分支
git fetch origin