git pull 与 git pull --rebase
生活随笔
收集整理的這篇文章主要介紹了
git pull 与 git pull --rebase
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 前提知識(shí)
- 區(qū)別git pull 與 git pull --rebase
- 簡(jiǎn)單理解
- git merge與git rebase
git pull 和 git pull --rebase 命令都是從遠(yuǎn)端拉取代碼,更新我們的倉庫。
前提知識(shí)
四個(gè)區(qū):
- 工作區(qū) :代碼在本地存儲(chǔ)的目錄位置
- 暫存區(qū) :git可以追蹤的代碼(工作區(qū)可以將代碼添加到暫存區(qū)(add))——臨時(shí)存儲(chǔ)
- 本地庫 :暫存區(qū)的代碼可以提交到本地庫(commit),并生成對(duì)應(yīng)的版本 ——生成歷史版本
- 遠(yuǎn)程庫:(遠(yuǎn)程庫:如github)本地區(qū)的代碼可以提交到遠(yuǎn)程庫(push),并生成對(duì)應(yīng)的版本 ——存儲(chǔ)在遠(yuǎn)端
區(qū)別git pull 與 git pull --rebase
簡(jiǎn)單理解
git pull 是 git pull --merge的簡(jiǎn)寫。
git pull 與git pull --rebase 的關(guān)系如下:
- git fetch是將遠(yuǎn)程庫的最新內(nèi)容拉到本地庫,用戶在檢查了以后決定是否合并到工作區(qū)中。
- git merge是將本地的兩個(gè)分支合并,如果在分支A中執(zhí)行g(shù)it merge B,那就是將分支B中的代碼合并到分支A中。
- git pull 則是將遠(yuǎn)程主機(jī)的最新內(nèi)容拉去到本地庫后直接合并到工作區(qū)中,即:git pull = git fetch + git merge,這樣可能會(huì)產(chǎn)生沖突,需要手動(dòng)解決。
圖示表示:
- 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則是將遠(yuǎn)程主機(jī)的最新內(nèi)容拉去到本地庫后直接變基到工作區(qū)中,即:git pull --rebase = git fetch + git rebase,可能會(huì)產(chǎn)生沖突手動(dòng)解決。
圖示表示:
git merge與git rebase
通過上面的比較,git pull 與 git pull --rebase的區(qū)分實(shí)際上就是git merge與git rebase的區(qū)分。為了方便區(qū)分我們使用兩個(gè)不同名分支進(jìn)行講解。
- git merge是合并分支。是將yang分支合并到master分支之后,master分支的代碼有所改動(dòng),會(huì)自動(dòng)commit,生成一個(gè)新的結(jié)點(diǎn),并且不會(huì)影響之前兩分支的提交節(jié)點(diǎn)。
合并前:
合并后:
執(zhí)行的合并命令:
- git rebase是變基。是將yang分支變基到master分支,就是將yang分支的代碼改動(dòng)完全合并到master分支,不會(huì)生成新的結(jié)點(diǎn)。
變基前:
變基后:
執(zhí)行的變基命令:
然后再執(zhí)行如下命令,是master分支指向最新節(jié)點(diǎn)
$ git checkout master $ git merge yang
由此可以看出merge和rebase的區(qū)別:
- merge 會(huì)多出一次 commit生成一個(gè)新節(jié)點(diǎn),rebase不會(huì)。
- merge 的提交樹是非線性的,rebase 的提交樹是線性的(通過重寫提交歷史)。
總結(jié)
以上是生活随笔為你收集整理的git pull 与 git pull --rebase的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学业计算机水平考试试题,信息技术学业水平
- 下一篇: 码制-原码、反码、补码、移码