小螞蟻學習git(3)——Git建立和合並分支、解決衝突、修復bug

    接上篇(http://my.oschina.net/woshixiaomayi/blog/521519)繼續。
git

    6、建立與合併分支。
app

    在版本回退中,每次提交,Git都把他們串成一條時間線,這條時間線就是一個分支。在Git中,這個分支叫主分支,即master分支。HEAD嚴格來講不是指向提交,而是指向master,master纔是指向提交的,so,HEAD指向的就是當前分支。
.net

    建立新的分支dev,而且切換到dev分支上,命令:
blog

    git checkout -b dev    建立新的分支,而且切換到該分支上,這至關於兩條命令:
開發

    git branch dev    建立分支dev
get

    git checkout dev    切換到分支dev
it

    git branch    查看分支,會列出全部分支,而且會在當前的分支上添加一個星號。
ast

    場景:在dev分支上,在readme.txt中作出一點修改。而後在master分支上查看。
bug

    能夠發如今master分支上是看不到dev分支新修改的內容的,這時候咱們須要把dev分支上的內容合併到master上,切換到master分支,使用命令:
apply

    git merge dev    將目標分支合併到當前分支上。如今再來查看master分支中的readme.txt,就可以看到

在dev分支上修改的內容了。值得注意的是,在合併中下方出現的提示文字,有一個Fast-forward,Git告訴咱們,此次合併是「快進模式」,也就是直接把master分支指向dev的當前提交,因此合併速度很是快。

    合併以後刪除dev分支,命令:

    git branch -d dev    加上一個-d,即爲刪除該分支。

    那麼如何解決衝突呢?

    場景:建立一個新的分支,fenzhi1,修改了readme.txt文件。而後在master分支上也一樣修改了readme.txt,這時候在master分支上進行合併。能夠看到提示信息說:Automatic merge failed;衝突誕生了。這時候,可使用 git status ,查看一個狀態,會告訴你:both modified:readme.txt。有兩條修改信息。

    cat readme.txt 查看一下內容,

    <<<<<<<<<<<<<<<HEAD

    aaaaaaaaaaaaaaaaaaaaaaaaaa

    ==================

    bbbbbbbbbbbbbbbbbbbbbb

    >>>>>>>>>>>>>>>fenzhi1

    <<<HEAD是指主分支修改的內容,>>>>>>>fenzhi1 是指fenzhi1上修改的內容,如今能夠修改這個文件的內容,而後add,commit提交便可。這樣合併時衝突的問題就解決了。

    分支管理策略

    一般合併分支時,git通常使用「Fast forward」模式,上面也有提到。在這種模式下,刪除分支後,會丟掉分支信息,可使用參數 --no-ff 來禁用「Fast forward」模式,命令:

    git merge --no-ff -m "使用no-ff合併分支" dev    使用--no-ff合併分支dev

    git branch -d dev    刪除dev分支

    git  log --graph --pretty=oneline --abbrev-commit    能夠看到被刪除的版本號還在。

    分支策略:首先master主分支應該是很是穩定的,也就是用來發布新版本的,通常狀況下不容許在上面幹活,幹活通常狀況下在新建的其餘分支上,幹完活,能夠把dev分支代碼合併到主分支master上來。

    7、bug分支

    在開發中,會常常碰到bug問題,那麼就須要修復,每一個bug均可以建立一個臨時分支來修復,修復完成後,在合併分支,而後將臨時分支刪除便可。

    場景:在工做中忽然接到了一個404bug,咱們能夠建立一個404分支來修復它,可是如今當前的dev分支上還有一些工做沒有提交,沒法建立和切換分支,這個怎麼辦呢?Git還提供了stash功能,能夠把當前工做現場隱藏起來,等之後恢復了現場繼續工做,命令:

    git stash    將當前的工做隱藏起來,這時候使用git status,來查看狀態,就會發現nothing to commit,working directory clean.工做區很乾淨。如今就能夠建立分支,修復bug了。修改完成一切都搞定以後,仍是要回到dev分支繼續幹活的。

    git checkout dev  回到dev分支

    git stash list    查看隱藏起來的工做現場

    將工做現場恢復有兩個命令:1,git stash apply 恢復,恢復以後,stash內容不會刪除,若是要刪除,須要使用命令git stash drop來刪除。2,使用git stash pop,刪除的同時把stash內容也刪除了。

相關文章
相關標籤/搜索