圖解4種git合併分支方法
有時候我們會後悔,有時候我們會想回到過去,有時候我們想改變歷史,然而在我們這個世界,目前來看是無法回到過去改變歷史的
但在git的世界裡,一切皆有可能,我們可以在多維空間裡任意切換,隨意改變一個宇宙的時間線,只要我們願意,git的分支就是這麼神奇
然而很多時候你以為你改變了歷史,不為人知,那個宇宙並沒有消失,而是遺失在了git的世界裡,有能力的人便能找到
彼此分開的世界也能隨時交叉合併,世界就這樣開開合合,偶會需要解決合併衝突
git中的分支非常的輕量,其實就是一個檔案,裡面記錄了分支所指向的commit id,下圖中有兩個分支分別是master和test,他們都指向了A2這個提交,HEAD是一個特殊的指標,他永遠指向你當前所在的位置;有時候你可能不在某一個分支上,不要驚慌,你隨時有權利去你想去的分支,git賦予了你新建,切換分支的能力
然後有時候世界並不總如上圖那般美好,面對分叉的兩個分支,git新手總是一臉茫然,本文我將講述git中合併分支的方法
在git中合併分支有三種方法,分別是merge,rebase,cherry-pick,而其中merge又有三種區別,下面將一一介紹
fast-forward
如果待合併的分支在當前分支的下游,也就是說沒有分叉時,會發生快速合併,從test分支切換到master分支,然後合併test分支
git checkout master
git merge test
這種方法相當於直接把master分支移動到test分支所在的地方,並移動HEAD指標
no-ff
如果我們不想要快速合併,那麼我們可以強制指定為非快速合併,只需加上--no-ff
引數
git checkout master
git merge –no-ff test
這種合併方法會在master分支上新建一個提交節點,從而完成合並
squash
svn的在合併分支時採用的就是這種方式,squash會在當前分支新建一個提交節點
squash和no-ff非常類似,區別只有一點不會保留對合入分支的引用
git checkout master
git merge –squash test
rebase
當要合併兩個分叉的分支時,merge的方式是將待合入分支和當前分支不同的部分,在當前分支新建節點,如下圖所示
rebase與merge不同,rebase會將合入分支上超前的節點在待合入分支上重新提交一遍,如下圖,B1 B2會變為B1' B2',看起來會變成線性歷史
cherry-pick
這命令簡直就是神器,給你自由,你想把那個節點merge過來就把那個節點merge過來,其合入的不是分支而是提交節點
總結
只有知道了這些合併方式的區別,才能git在手,天下我有,任你分支在凌亂,我自巋然不動
繼續學習
- 起底Git-開篇
- 起底Git-版本控制簡史
- 起底Git-Git簡史
- 起底Git-Git內部原理
- 起底Git-Git基礎
- 起底Git-Git進階
- 起底Git-Git開發流程
- 起底Git-Git常用命令總結
原文網址:http://yanhaijing.com/git/2017/07/14/four-method-for-git-merge/
歡迎訂閱我的微信公眾帳號,只推送原創文字。掃碼或搜尋:顏海鏡
相關文章
- git合併分支Git
- Git 分支與合併Git
- Git 分支 - 分支的新建與合併Git
- git 分支合併報錯Git
- git分支合併與rebaseGit
- git 知識之分支合併Git
- 【Git】合併分支報衝突怎麼解決Git
- Git dev分支合併到master分支完美實戰GitdevAST
- 這才是真正的 Git——分支合併Git
- 教你玩轉Git-分支合併Git
- git合併分支和提交步驟Git
- 【Git】3. Git重要特性-分支操作,合併衝突詳解Git
- git合併分支,如果選擇性的合併檔案?Git
- git合併單個檔案到其他分支Git
- Git 分支 - 分支的衍合Git
- Git -- 分支與合併 (命令列+視覺化工具p4merge)Git命令列視覺化
- Git如何撤銷某次分支的合併MergeGit
- 合併分支:Git merge 和 rebase 的區別Git
- Git 教程:解密 .gitignore 檔案、合併分支、解決衝突、及 Git 幫助Git解密
- Git merge和rebase分支合併命令的區別Git
- 簡單介紹Git合併分支的流程步驟Git
- git小技巧--提取/合併某分支的部分檔案Git
- git合併某分支上的單次提交(cherry-pick)Git
- Python3 列表list合併的4種方法Python
- 4、Git之分支操作Git
- git更新原生代碼分支並將其合併到master分支的完整流程GitAST
- TortoiseGIT建立及合併分支Git
- 記一次Git分支合併引起的問題和修復Git
- git的cherry-pick,選擇其他分支特定提交進行合併Git
- vscode 新建、合併分支VSCode
- Git詳解之三:Git分支Git
- 圖解git,用手繪圖帶你理解git中分支的原理和應用圖解Git繪圖
- 真正的git合併Git
- 合併PDF檔案怎樣做?分享兩種PDF合併方法
- Git - 多個分支合併到 main 分支之後還存在一些 commit 無法併入一條時間線上GitAIMIT
- 一種新的Git分支管理策略Git
- 合併JavaScript陣列的N種方法JavaScript陣列
- Android Studio Git多人協作,分支,合併(基於碼雲倉庫)AndroidGit