git初體驗(三)git分支
分支的理念就是分身,就像孫悟空拔出猴毛變出很多跟自己一模一樣的猴子,然後每個猴子做自己的事情互不干涉,等到所有猴子做完之後,猴子集合來合併勞動成果,然後悟空就把那些猴子猴孫門統統收回了。
你創建了一個屬於你自己的分支,別人看不到,還繼續在原來的分支上正常工作,而你在自己的分支上幹活,想提交就提交,直到開發完畢後,再一次性合併到原來的分支上,這樣,既安全,又不影響別人工作。
Git鼓勵大量使用分支:
1、創建與合併分支
命令如下:
查看分支:git branch創建分支:git branch name切換分支:git checkout name創建+切換分支:git checkout -b name合併某分支到當前分支:git merge name刪除分支:git branch -d name
推薦閱讀廖雪峰的Git教程
2、處理衝突產生衝突的方式很多,常見的一種是創建一個分支並修改提交,然後回到主分支在修改提交同一個文件,然後「快速合併分支」就發生衝突了:
$ git merge feature1Auto-merging readme.txtCONFLICT (content): Merge conflict in readme.txtAutomatic merge failed; fix conflicts and then commit the result.
打開我修改的文件,可以發現顯示如下:
<<<<<<< HEAD 在master上做出修改=======解決衝突>>>>>>feature1
<<<<<<< HEAD 表示主分支,主分支的修改是:「在master上做出修改」;>>>>>>feature1表示我創建的feature1分支。
解決辦法就是手動處理衝突,這點跟SVN一樣。處理之後在提交,然後刪除分支即可。
3.分支策略通過廖雪峰的官方網站的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
4、儲蓄
在上一篇博客[git初體驗(二)基礎git文件操作]也總結了git的儲蓄,所謂的儲蓄就是針對以下的情況:
當你正在開發一個功能時,突然boss讓你儘快修改一個bug,此時最緊急的是fix bug. 而正開發的功能尚未完善還不能提交,這個時候就會想到能不能將手頭的工作隔離開,去單單解決bug,然後提交bug,然後在進行手頭工作。
上面的案例就是git儲蓄的出現:
git stash #把當前工作現場「儲藏」起來
5、feature
開發一個新feature,最好新建一個分支;
如果要丟棄一個沒有被合併過的分支,將丟失掉修改,可以通過git branch -D name強行刪除。
6、git本地分支與遠程分支參考: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
推薦閱讀:
※《偷心》:如果你在都市中體驗過愛情,請務必去看。
※魅族手機玩遊戲體驗怎麼樣?
※有一個愛秀恩愛的室友是怎樣的體驗
※帶著爸媽去相親,究竟是一種怎樣的體驗?
TAG:體驗 |