git pull 与 git pull --rebase
生活随笔
收集整理的這篇文章主要介紹了
git pull 与 git pull --rebase
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前提知識
- 區別git pull 與 git pull --rebase
- 簡單理解
- git merge與git rebase
git pull 和 git pull --rebase 命令都是從遠端拉取代碼,更新我們的倉庫。
前提知識
四個區:
- 工作區 :代碼在本地存儲的目錄位置
- 暫存區 :git可以追蹤的代碼(工作區可以將代碼添加到暫存區(add))——臨時存儲
- 本地庫 :暫存區的代碼可以提交到本地庫(commit),并生成對應的版本 ——生成歷史版本
- 遠程庫:(遠程庫:如github)本地區的代碼可以提交到遠程庫(push),并生成對應的版本 ——存儲在遠端
區別git pull 與 git pull --rebase
簡單理解
git pull 是 git pull --merge的簡寫。
git pull 與git pull --rebase 的關系如下:
- git fetch是將遠程庫的最新內容拉到本地庫,用戶在檢查了以后決定是否合并到工作區中。
- git merge是將本地的兩個分支合并,如果在分支A中執行git merge B,那就是將分支B中的代碼合并到分支A中。
- git pull 則是將遠程主機的最新內容拉去到本地庫后直接合并到工作區中,即:git pull = git fetch + git merge,這樣可能會產生沖突,需要手動解決。
圖示表示:
- git rebase是將提交到某一分支上的所有修改都移至另一分支上。即如果在B分支上使用git rebase A就是將B分支上的修改都變基(移到)A分支上
詳見:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA - git pull --rebase則是將遠程主機的最新內容拉去到本地庫后直接變基到工作區中,即:git pull --rebase = git fetch + git rebase,可能會產生沖突手動解決。
圖示表示:
git merge與git rebase
通過上面的比較,git pull 與 git pull --rebase的區分實際上就是git merge與git rebase的區分。為了方便區分我們使用兩個不同名分支進行講解。
- git merge是合并分支。是將yang分支合并到master分支之后,master分支的代碼有所改動,會自動commit,生成一個新的結點,并且不會影響之前兩分支的提交節點。
合并前:
合并后:
執行的合并命令:
- git rebase是變基。是將yang分支變基到master分支,就是將yang分支的代碼改動完全合并到master分支,不會生成新的結點。
變基前:
變基后:
執行的變基命令:
然后再執行如下命令,是master分支指向最新節點
$ git checkout master $ git merge yang
由此可以看出merge和rebase的區別:
- merge 會多出一次 commit生成一個新節點,rebase不會。
- merge 的提交樹是非線性的,rebase 的提交樹是線性的(通過重寫提交歷史)。
總結
以上是生活随笔為你收集整理的git pull 与 git pull --rebase的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学业计算机水平考试试题,信息技术学业水平
- 下一篇: 码制-原码、反码、补码、移码