git fetch 、git pull 與 git pull --rebase


  1. git fetch 與 git pull

  都是從遠程拉取代碼到本地,git fetch只是拉取到本地,git pull不僅拉取到本地還merge到本地分支中。所以git pull是git fetch與git merge的集合體。 
  

  2. git pull 與 git pull --rebase

      git pull的默認行為是git fetch + git merge, 
  git pull --rebase則是git fetch + git rebase.

  從目的來說,兩者沒差別,運行之后, 能獲得一樣的code base。但從版本管理角度,這兩者有各自的使用意義。對比來看,git merge多了一次提交--“合並提交”。git rebase則沒有。

  git merge:
  簡單來說,它把兩條不同分支歷史的所有提交合並成一條線,並在“末端”打個結,即生成一次合並提交。最后形成一條單一的提交線。

  git rebase:
  根據參數的不同,行為有些差別。但總的來說,它相當於把分叉的兩條歷史提交線中的一條,每一次提交都撿選出來, 在另一條提交線上提交。最后也形成一條單一的提交線。

  表示把本地當前分支里的每個提交(commit)取消掉,並且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然后把本地當前分支更新 為最新的"origin"分支,最后把保存的這些補丁應用到本地當前分支上。

  在rebase的過程中,也許會出現沖突(conflict). 在這種情況,Git會停止rebase並會讓你去解決 沖突;在解決完沖突后,用"git-add"命令去更新這些內容的索引(index), 然后,你無需執行 git-commit,只要執行:
  $ git rebase --continue
  這樣git會繼續應用(apply)余下的補丁。
  在任何時候,你可以用--abort參數來終止rebase的行動,並且"mywork" 分支會回到rebase開始前的狀態。
  $ git rebase --abort

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM