(轉載)git pull origin master與git pull --rebase origin master的區別
請移步原文
https://www.jianshu.com/p/dc367c8dca8e
1.git pull
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
git fetch : 從遠端分支拉取程式碼,可以得到遠端分支上最新的程式碼。
所以git pull origin master與git pull --rebase origin master的區別主要是在遠端與原生程式碼的合併上面了。
2.merge 和 rebase
現在我們有這樣的兩個分支,test(本地)和master(遠端),假設遠端的master的程式碼已經更改了(在B基礎上變動:C,F),test的程式碼更改了要提交程式碼(在B基礎上變動:D,E)
提交如下:
D---E test
/
A---B---C---F--- master
在master執行git merge test,然後會得到如下結果:
D--------E
/ \
A---B---C---F----G--- test, master
在master執行git rebase test,然後得到如下結果:
A---B---D---E---C‘---F‘--- test, master
merge操作會生成一個新的節點,之前的提交分開顯示。
而rebase操作不會生成新的節點,是將兩個分支融合成一個線性的提交。
3.rebase好處
想要更好的提交樹,使用rebase操作會更好一點。
這樣可以線性的看到每一次提交,並且沒有增加提交節點。
merge 操作遇到衝突的時候,當前merge不能繼續進行下去。手動修改衝突內容後,add 修改,commit 就可以了。
而rebase 操作的話,會中斷rebase,同時會提示去解決衝突。
解決衝突後,將修改add後執行git rebase –continue繼續操作,或者git rebase –skip忽略衝突。
git rebase和git merge效果一樣,原理不同,git rebase過程相比較git merge合併整合得到的結果沒有任何區別,但是通過git rebase衍合能產生一個更為整潔的提交歷史。
相關文章
- git merge origin master git merge origin/master區別GitAST
- git pull如果提示merge衝突,先進行git reset --hard origin/master 後再git pullGitAST
- 在Git中,origin / master與origin master之間有什麼區別?GitAST
- git - git push origin master 報錯GitAST
- git關於origin和masterGitAST
- git學習:關於origin和masterGitAST
- homebrew安裝問題(Failed during: git fetch origin master:refs/remotes/origin/master --tags --force)AIGitASTREM
- git rebase masterGitAST
- 初次git提交程式碼報錯:Push to origin/master was rejectedGitAST
- Git撤銷本次pull rebase(變基) 回退到pull前的程式碼Git
- git中出現”the requested upstream branch ‘origin/master‘ does not exist“問題的解決GitAST
- git push origin master 時出現報錯 error: src refspec master does not match any error: failed to push someGitASTErrorAI
- GIT使用過程出現(master|REBASE 1/10)GitAST
- git rebase master 分支出現一堆 ^MGitAST
- git rebase後出現(master|REBASE 1/10)的解決辦法GitAST
- git fetch & pull詳解Git
- Git 拉取 origin 分支Git
- git pull 衝突解決Git
- git push --set-upstream originGit
- window設定定時執行 git 更新(git pull)Git
- git pull衝突的解決方案Git
- git merge和rebase的區別Git
- 一文讀懂 Git fetch 和 Git pull 的終極區別(帶實驗結果)Git
- Git中merge和rebase的區別Git
- 使用git pull提示refusing to merge unrelated historiesGit
- Ubuntu git pull 出現Permission denied ErrorUbuntuGitError
- git 從master建立新的分支GitAST
- Git應用詳解第六講:Git協作與Git pull常見問題Git
- git和TortoiseGit pull和push報錯:git did not exit cleanlyGit
- Git rebase 與 Git merge 的使用Git
- brew 報錯 error: Not a valid ref: refs/remotes/origin/master 的解決方法ErrorREMAST
- Git Fork Pull Request(PR)和Merge Request(MR)Git
- 合併分支:Git merge 和 rebase 的區別Git
- Git解決pull操作不成功問題Git
- Docker: docker pull, wget, curl, git clone 等如何更快?DockerwgetGit
- git pull報“unable to update local ref”解決方案Git
- git使用報錯fatal: remote origin already exists.GitREM
- Git使用gh-pages分支切換到master分支錯誤pathspec master did not match any files known to gitGitAST