閱讀343 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《Git學習指南》——1.3 分支的創建與合並很簡單

本節書摘來自異步社區《Git學習指南》一書中的第1章,第1.3節,作者: 【德】René Preißel(普萊貝爾) , Bjørn Stachmann(斯拉赫曼)著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看

1.3 分支的創建與合並很簡單

對於大多數版本控製係統來說,分支的創建與合並通常會因其特殊性而被認為是高級拓展操作。但由於Git最初就是為了方便那些散落在世界各地的Linux內核開發者而創建的,合並多方努力的結果一直都是其麵臨的最大挑戰之一,所以Git的設計目標之一就是要讓分支的創建與合並操作變得盡可能地簡單且安全。

在下麵的圖1.4中,我們向你展示了開發者是如何通過創建分支的方式來進行並行開發的。圖中的每一個點都代表了該項目的一個版本(即commit)。而由於在Git中,我們隻能對整個項目進行版本化,所以每個點同時也代表了屬於同一版本的各個文件。

screenshot

圖1.4 因開發者的並行開發而出現的分支創建操作

如上所示,圖中兩位開發者的起點是同一個版本。之後兩人各自做了修改,並提交了修改。這時候,對於這兩位開發者各自的版本庫來說,該項目已經有了兩個不同的版本。也就是說,他們在這裏創建了兩個分支。接下來,如果其中一個開發者想要導入另一個人的修改,他/她就可以用Git來進行版本合並。如果合並成功了,Git就會創建一個合並提交,其中會包含兩位開發者所做的修改。這時如果另一位開發者也取回了這一提交,兩位開發者的項目就又回到了同一個版本。

在上麵的例子中,分支的創建是非計劃性的,其原因僅僅是兩個開發者在並行開發同一個軟件罷了。在Git中,我們當然也可以開啟有針對性的分支,即顯式地創建一個分支(見圖1.5)。顯式分支通常主要用於協調某一種功能性的並行開發。

screenshot

圖1.5 針對不同任務的顯式分支

版本庫在執行拉回和推送操作時,可以具體指定其針對的是哪一些分支。當然,除了這些簡單的分支創建和合並處理外,我們也可以對分支執行以下動作。

移植分支:我們可以直接將某一分支中的提交轉移到另一個版本庫中。
隻傳送特定修改:我們可以將某一分支中的某一次或某幾次提交直接複製到另一個分支中。這就是所謂的撿取處理。
清理曆史:我們可以對分支曆史進行改造、排序和刪除。這有利於為該項目建立更好的曆史文檔。我們稱這種處理為交互式重訂(interactive rebasing)。

最後更新:2017-05-31 18:01:26

  上一篇:go  【火熱報名】2017 PHP全球開發者大會:6月10日舉辦
  下一篇:go  《Git學習指南》——1.2 版本庫,分布式工作的基礎所在