站長資訊網
        最全最豐富的資訊網站

        Git學習之了解git merge命令

        本篇文章帶大家了解學習一下Git分支,介紹一下使用分支的Git Merge命令,希望對大家有所幫助!

        Git學習之了解git merge命令

        在Git中merge是用來把分叉的提交歷史放回到一起的方式。git merge命令用來將你之前使用git branch命令創建的分支以及在此分支上獨立開發的內容整合為一個分支。

        請注意下面的所有命令都會是將其他分支合并到當前所在工作分支上。當前工作分支的內容會由于merge操作產生更新,但是目標分支則完全不受影響。再次強調,這意味著git merge通常與其他幾個git命令一起使用,包括使用git checkout命令來選擇當前工作分支,以及使用git branch -d命令來刪除已經合并過的廢棄分支。

        它是如何運行的

        git merge會將多個提交序列合并進一個統一的提交歷史。在最常見的使用場景中,git merge被用來合并兩個分支。在本文檔接下來的部分,我們會專注于這種合并場景。在這種場景中,git merge接受兩個commit指針,通常是兩個分支的頂部commit,然后向前追溯到這兩個分支最近的一個共同提交。一旦找到這個共同提交,Git就會創建一個新的"merge commit",用來合并兩個分支上各自的提交序列。

        比如說我們有一個功能分支由main分支派生出來,現在我們希望將這個功能分支合并回main分支。

        Git學習之了解git merge命令

        執行合并命令會將指定分支合并到當前工作分支上,我們假設當前工作分支為main。Git根據兩個分支自行決定合并提交的算法(將在下面具體討論)。

        Git學習之了解git merge命令

        合并commit與普通commit不一樣,因為合并commit會有兩個父提交。創建一個合并commit時Git會嘗試自動將兩個獨立的提交歷史合并為一個。不過當Git發現某一塊數據在兩邊的提交歷史中都含有變更,它將無法自動對其進行合并。這種情況被稱為版本沖突,此時Git需要人為介入調整才能繼續進行合并。

        準備合并

        在實際進行合并操作之前,需要進行一些準備步驟,以保證合并過程能夠順利進行。

        確認接收合并的分支

        執行git status命令查看當前分支的狀態,確保HEAD指正指向的是正確的接收合并的分支。如果不是,執行git checkout命令切換到正確的分支。在我們的示例中,執行git checkout main

        獲取最新的遠程提交

        確保合并操作涉及的兩個分支都更新到遠程倉庫的最新狀態。執行git fetch拉取遠程倉庫的最新提交。一旦fetch操作完成,為了保證main分支與遠程分支同步,還需執行git pull命令。

        合并

        當上面提及的準備工作都已完備,合并就可以正式開始了。執行git merge <branch>命令,其中為需要合并到當前分支的目標分支名稱。

        快進合并

        當前工作分支到合并目標分支之間的提交歷史是線性路徑時,可以進行快進合并。在這種情況下,不需要真實的合并兩個分支,Git只需要把當前分支的頂端指針移動到目標分支的頂端就可以了(也就是快進的意思)。在這種情況下快進合并成功的將提交歷史合并至一處,畢竟目標分支中的提交此時都包含在當前分支的提交歷史中了。對于將功能分支快進合并到main分支的流程可以參見下圖所示:

        Git學習之了解git merge命令

        然而快進合并在兩個分支出現分叉的情況下是不允許執行的。當目標分支相對于當前分支的提交歷史不是線性的,Git只能通過三路合并算法來決定如何對兩個分支進行合并。三路合并算法需要使用一個專用commit來整合兩邊的提交歷史。這個名詞源于Git要想生成合并commit,需要用到三個commits:兩個分支的頂端commit,以及它們的共同祖先commit。

        Git學習之了解git merge命令

        雖然實際上可以選擇使用這些不同的合并策略,但是大多數開發者更喜歡快進合并(通過利用 rebasing 命令),尤其是用于小功能的開發或者bug修復;反之對于合并長期開發的功能分支,則更傾向于使用三路合并的方式。在第二種場景中,merge產生的合并commit會作為兩個分支合并的標志保留在提交歷史中。

        接下來我們用下面第一個例子來展示如何進行快進合并。下面的命令會先創建一個新分支,在新分支上進行兩次提交,然后用快進合并把新分支合并回main分支。

        # Start a new feature git checkout -b new-feature main # Edit some files git add <file> git commit -m "Start a feature" # Edit some files git add <file> git commit -m "Finish a feature" # Merge in the new-feature branch git checkout main git merge new-feature git branch -d new-feature

        這個例子中的工作流程通常用于短期功能的開發,這種開發流程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 欧美日韩精品久久久久| 久久综合精品国产二区无码 | 无码国内精品久久人妻麻豆按摩 | 亚洲精品二三区| 成人国产精品一区二区网站| 亚洲а∨天堂久久精品9966| 欧美精品免费在线| 国产精品后入内射日本在线观看| 在线精品亚洲| 亚洲欧美精品丝袜一区二区| 国产精品无码免费专区午夜| 久久精品国产99国产电影网| 精品亚洲国产成AV人片传媒| 亚洲精品夜夜夜妓女网| 久久91精品综合国产首页| 国产成人精品高清不卡在线| 好吊妞视频精品| 91精品视频网站| 8x福利精品第一导航| 国产精品久久久久jk制服| 国产午夜精品一区二区三区漫画| 亚洲国产精品成人精品无码区| 久久亚洲AV永久无码精品| 国产香蕉国产精品偷在线| 国产精品亚洲专区无码WEB| 亚洲嫩草影院久久精品| 麻豆精品成人免费国产片| 精品三级在线观看| 国产在线拍揄自揄视精品不卡| 成人国内精品久久久久影院| 精品国产乱码久久久久久郑州公司| 亚洲精品乱码久久久久久按摩| 野狼精品社区| 亚洲人成精品久久久久| 亚洲精品国产av成拍色拍| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 免费国产在线精品一区| 亚洲国产综合精品中文字幕 | 免费人欧美日韩在线精品| 中文字幕无码精品亚洲资源网久久| 无夜精品久久久久久|