對git的rebase(變基)的理解
其實git的官網對變基的解析挺詳細的了:地址
從原理上也能理解【變基】和【合併】有啥區別。
我的理解是,【變基】和【合併】都能解決一個問題,那就是合併程式碼。但是他們的區別是:在master的記錄上會有所不同。如下圖:(我是用sourceTree做的合併與變基的)
【合併】
【變基】
從上面那兩個圖可以看到,如果是【合併】的話,C4
這一個記錄其實還是在experiment
分支上的,也就是說master
分支上並沒有C4
的提交記錄。
但如果是【變基】,C4
的記錄也會出現在master
上
而且在這分支關係圖上還可以看到,【變基】和【合併】對程式碼的處理的差異。
【合併】是以C2
為基準點,把C3
和C4
合併,並生成新的提交。
而【變基】是以C3
為基準點,並且把分支上的變動(也就是C4
這一次提交的變動)再在C3
上重演一遍,所以master
也能有C4
的記錄了。
於是單純看master
的提交記錄就可以知道
【合併】是沒有C4
的提交記錄的
【變基】是有C4
的提交記錄的
應用場景就因人而異了,有些人喜歡知道分支的所有改動(所有提交),所以就會用【變基】,把分支的所有記錄移動到master上
但是我個人還是比較喜歡合併,因為我們都是按照功能進行分支開發的,所以我看到你合併了這個分支我就知道你完成了這個功能的開發,不需要知道你到底做了什麼東西。而當我真的要知道你提交了什麼改動了什麼,我直接切去你的開發分支不就好了嗎
以上當屬個人見解,當然【變基】還有很多妙用,不僅僅是修整歷史,將分支歷史併入主線。
這麼簡單。
相關文章
- git:rebase(變基)的使用和理解Git
- 如何理解git rebase?Git
- git rebase(變基)—— Git 學習筆記 19Git筆記
- Git 由淺入深之細說變基 (rebase)Git
- git rebase的使用Git
- Git撤銷本次pull rebase(變基) 回退到pull前的程式碼Git
- Git基礎命令之git rebase命令Git
- [Git] Git整理(四) git rebase 的使用Git
- Git rebase 與 Git merge 的使用Git
- [Git]rebaseGit
- git rebaseGit
- Git -- RebaseGit
- git rebase 和 git mergeGit
- Git——rebase命令Git
- git rebase -iGit
- git rebase 流程Git
- git rebase masterGitAST
- git rebase --onto 的奇妙用法Git
- git merge和rebase的區別Git
- git學習之git rebaseGit
- Git中merge和rebase的區別Git
- 你根本不懂rebase-使用rebase打造可讀的git graphGit
- git rebase後出現(master|REBASE 1/10)的解決辦法GitAST
- 基於Git rebase修改歷史提交資訊Git
- git在工作中正確的使用方式----git rebase篇Git
- GIT使用rebase和merge的正確姿勢Git
- 合併分支:Git merge 和 rebase 的區別Git
- 一種邪道的 Git 整潔之法——rebase & squashGit
- 學會使用 git-rebaseGit
- git-rebase進階使用Git
- 撤銷rebase與git原理Git
- 徹底搞懂 Git-RebaseGit
- git的理解Git
- Git merge和rebase分支合併命令的區別Git
- Git常用命令,merge和rebase的區別Git
- (轉載)git pull origin master與git pull --rebase origin master的區別GitAST
- Git的修改提交記錄和變基Git
- 詳解git rebase,讓你走上git大神之路Git