一.分支管理git
分支理解
分支開發,筆者在這裏說下對於分支的理解,好比如今一個項目工程中有兩個功能點須要開發,因爲開發時間有限,爲了保證功能準時上線,功能開發就須要並行,這時候咱們就用到了分支開發。總之分支開發能是爲了提升開發效率的。segmentfault
分支的建立
筆者經歷過svn建立分支和合並分支。那是一件至關痛苦的事情,通常RD極少有建立分支的權限,並且svn建立分支和分支切換也是比較麻煩的,固然如今有不少管理後臺簡化了建立分支的複雜度,學習了git分開建立和合並,你會發現分支開發如此簡單。
使用"git checkout -b <分支名>",建立新的分支並使用,如圖:svn
分支的查看
上圖中「git branch」用於查看本地倉庫的分支列表,有時咱們可能僅僅想先建立一個分支而不是馬上就是用,後面在切換分支,此時「git branch <分支名>」用來建立分支
"git checkout <分支名>"切換分支
「git checkout」 是否是很眼熟好像在哪裏見過(咱們好像在哪見過,你記得嘛???),是在git本地相關操做(二)使用到的,在文件沒有提交倉庫以前,撤銷本地文件的修改"git checkout -- <file>"
咱們繼續對introduce.txt文件進行操做:
(1).test分支的編輯提交到本地倉庫
(2).dev分支編輯提交學習
分支衝突解決
如圖,提示發生衝突
上面的<<<<<<以上即是的兩個分支共同的部分,=======表示當前分支修改的內容,>>>>>>>表示的合併過來的分支修改的內容,筆者解決的方式都保留這兩個分支修改的內容,執行「git add」、"git commit "從新提交來解決衝突,如圖:spa
分支的合併(不衝突)
咱們接着上步的操做,切換到master分支,而後將dev分支的內容合併到master上,使用「git merge 分支名」"git merge 分支名」命令中的分支名是合併時候將該分支中的數據合併到當前分支上,數據的方向你們要搞清楚圖片
分支的刪除
「git branch -d <分支名>」,如圖:開發
查看各分支路徑
經過「git log --graph --pretty=oneline」git會以圖形方式顯示各個分支路徑get
二.總結it
git命令總結
「git checkout -b <分支名>」建立分支並切換到新建立的分支上
「git branch」查看當前代碼關聯的本地倉庫的分支
「git branch <分支名>」建立分支
「git checkout <分支名>」,切換到指定的分支上,注意與git checkout -- <file>區分
git分支合併時衝突的解決方式,收修改文件中衝突部門的內容,而後執行「git add」、"git commit "從新提交來解決衝
"git merge 分支名」合併的方向要搞清楚
「git branch -d <分支名>」分支的刪除
「git log --graph --pretty=oneline」查看git各個分支及分支之間合併的操做及路徑ast
git內部管理分支梳理
git把每次提交串成一條時間軸,這條時間軸就是git的一個分支,git默認的分支是master;HEAD是浮動的遊標,做用是指向本地代碼修改最新的版本(包括未提交的:處於編輯狀態和staging狀態),關係如圖展現:上圖展現的是,在執行完「git commit -m <desc>」的狀態;若是在編輯完,提交前,若是沒有執行"git add",HEAD指向的是工做區;若是執行了「git add」,HEAD執行的是stage區(暫存區)
建立分支,切換分支,HEAD會發生變化只想當前使用的分支,如圖:在多分支開發過程當中,各分支的狀態
分支合併之後各分支的狀態,以及HEAD遊標的指向狀況,
注意:上圖合併是將dev分支合併到主要執行的命令:
git checkout master
git merge dev
中間有一次分之切換而後當合並分支時,當前分支實際上代碼是有變化的,變化的部分就是從其餘分支上合併過來的,而後當前分支就至關於發生一次提交,在實踐上有一個節點,表示當前合併之後的代碼狀態。實際開發過程當中,master分支要求是很是穩定的,用於版本發佈的;平時咱們會在dev分支上進行開發,當須要發佈新版代碼的時候,就須要將dev分支的代碼合併到master分支上,同事之間能夠再建立分支進行獨自開發,常常合併到dev分支上便可。