1. 程式人生 > >Git--創建與合並分支

Git--創建與合並分支

使用 圖片 參數表 歷史 標記 創建分支 技術 2個 禁用

在 版本回填退裏,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裏,這個分支叫主 分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。


首先,我們來創建dev分支,然後切換到dev分支上。如下操作:


技術分享


git checkout 命令加上 –b參數表示創建並切換,相當於如下2條命令


git branch dev


git checkout dev


git branch查看分支,會列出所有的分支,當前分支前面會添加一個星號。然後我們在dev分支上繼續做demo,比如我們現在在readme.txt再增加一行 7777777777777


首先我們先來查看下readme.txt內容,接著添加內容77777777,如下:


技術分享




現在dev分支工作已完成,現在我們切換到主分支master上,繼續查看readme.txt內容如下:


技術分享



現在我們可以把dev分支上的內容合並到分支master上了,可以在master分支上,使用如下命令 git merge dev 如下所示:


技術分享


git merge命令用於合並指定分支到當前分支上,合並後,再查看readme.txt內容,可以看到,和dev分支最新提交的是完全一樣的。


註意到上面的Fast-forward信息,Git告訴我們,這次合並是“快進模式”,也就是直接把master指向dev的當前提交,所以合並速度非常快。


合並完成後,我們可以接著刪除dev分支了,操作如下:


技術分享


總結創建與合並分支命令如下:

查看分支:git branch

創建分支:git branch name

切換分支:git checkout name

創建+切換分支:git checkout –b name

合並某分支到當前分支:git merge name

刪除分支:git branch –d name


那麽如何解決提交中的沖突呢?



下面我們還是一步一步來,先新建一個新分支,比如名字叫fenzhi1,在readme.txt添加一行內容8888888,然後提交,如下所示:


技術分享


同樣,我們現在切換到master分支上來,也在最後一行添加內容,內容為99999999,如下所示:


技術分享


現在我們需要在master分支上來合並fenzhi1,如下操作:


技術分享




Git用<<<<<<<,=======,>>>>>>>標記出 不同分支的內容,其中<<>>>>fenzhi1 是指fenzhi1上修改的內容,我們可以修改下如下後保存:


技術分享


如果我想查看分支合並的情況的話,需要使用命令 git log.命令行演示如下:


技術分享


分支管理策略。

通常合並分支時,git一般使用”Fast forward”模式,在這種模式下,刪除分支後,會丟掉分支信息,現在我們來使用帶參數 –no-ff來禁用”Fast forward”模式。首先我們來做demo演示下:


1. 創建一個dev分支。
2. 修改readme.txt內容。
3. 添加到暫存區。
4. 切換回主分支(master)。
5. 合並dev分支,使用命令 git merge –no-ff -m “註釋” dev
6. 查看歷史記錄


截圖如下:


技術分享


分支策略:首先master主分支應該是非常穩定的,也就是用來發布新版本,一般情況下不允許在上面幹活,幹活一般情況下在新建的dev分支上幹活,幹完後,比如上要發布,或者說dev分支代碼穩定後可以合並到主分支master上來。


更多的Git分支管理和沖突解決請參考:
http://www.cnblogs.com/mengdd/p/3585038.html


bug分支



在開發中,會經常碰到bug問題,那麽有了bug就需要修復,在Git中,分支是很強大的,每個bug都可以通過一個臨時分支來修復,修復完成後,合並分支,然後將臨時的分支刪除掉。


比如我在開發中接到一個404 bug時候,我們可以創建一個404分支來修復它,但是,當前的dev分支上的工作還沒有提交。比如如下:


技術分享


並不是我不想提交,而是工作進行到一半時候,我們還無法提交,比如我這個分支bug要2天完成,但是我issue-404 bug需要5個小時內完成。怎麽辦呢?還好,Git還提供了一個stash功能,可以把當前工作現場 ”隱藏起來”,等以後恢復現場後繼續工作。如下:


技術分享


所以現在我可以通過創建issue-404分支來修復bug了。


首先我們要確定在那個分支上修復bug,比如我現在是在主分支master上來修復的,現在我要在master分支上創建一個臨時分支,演示如下:


技術分享


修復完成後,切換到master分支上,並完成合並,最後刪除issue-404分支。演示如下:


技術分享


現在,我們回到dev分支上幹活了。


技術分享


工作區是幹凈的,那麽我們工作現場去哪裏呢?我們可以使用命令 git stash list來查看下。如下:


技術分享


工作現場還在,Git把stash內容存在某個地方了,但是需要恢復一下,可以使用如下2個方法:


1. git stash apply恢復,恢復後,stash內容並不刪除,你需要使用命令git stash drop來刪除。
2. 另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。
演示如下



技術分享


文章有很大一部分來自http://my.oschina.net/gsbhz/blog/337719
修正並加入許多自己的理解 希望對你有所幫助。

Git--創建與合並分支