分支branch做爲git一個強大功能,在平時開發若是可以善加使用,定能成倍提高開發效率。html
主分支master
上通常是穩定版本,須要保證隨時都能發佈。git
因此,能夠創建一個開發分支用於開發新功能。測試
git branch dev
查看有哪些分支3d
git branch -a * dev master bugfix-1 remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/dev remotes/source/master
查看本地有哪些分支code
git branch * dev master bugfix-1
查看遠程有哪些分支orm
git branch -r origin/HEAD -> origin/master origin/master origin/dev source/master
當一個開發分支上的新功能已經開發完成,並測試OK,此時,能夠合併到master
.htm
當前在master
分支上,使用以下命令進行合併:blog
git merge dev --no-ff -m "AI2.0開發完成"
強烈建議使用--no-ff
選項,這樣,當合併到主分支的時候,會生成一個提交記錄。圖片
若是合併到主分支後須要回滾,直接找到剛纔合併時的提交記錄,進行回滾便可。開發
尤爲是在主分支和dev分支交叉提交記錄的時候,若是不使用--no-ff,須要挨個找哪一個記錄是在dev分支上提交的,會比較麻煩。
默認狀況下,Git執行"快進式合併"(fast-farward merge),會直接將Master分支指向Develop分支。
兩種合併方式以下圖所示。
fast-farward
no-fast-farward
在開發分支上提交了不少內容,這個時候,若是須要比較開發分支與主分支的差別,可使用如下方法:
git diff branch1 branch2 --stat
例如,查看dev
分支相對於master
的改動文件:
git diff master dev --stat
git diff branch1 branch2
用 oneline 或 format 時結合 --graph 選項,能夠看到開頭多出一些 ASCII 字符串表示的簡單圖形,形象地展現了每一個提交所在的分支及其分化衍合狀況。
git log --pretty=oneline --graph * 7880521e21b1329965179bd45d632a3c91e227fa (HEAD -> master) Merge branch 'dev' |\ | * 27cc24423ba0fcb01365eb7ffdc9ed33b059c36b (dev) 3 test | * 714788192eb4760b614c2ab5fe45634df89904ee 2 test * | ccce2c06660d8263e6a65d124ab947db0be56556 2 txt |/ * 24c3941c7f5ef3e6b0c0be7638d29387f4643d90 1 test
git log --pretty=format:"%h %s" --graph * 7880521 Merge branch 'dev' |\ | * 27cc244 3 test | * 7147881 2 test * | ccce2c0 2 txt |/ * 24c3941 1 test (END)
*
表明是在哪一個分支提交的。