git pull和git fetch的區別


Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:fetchpull

相同點

  首先在作用上他們的功能是大致相同的,都是起到了更新代碼的作用。

1.fetch:相當於是從遠程獲取最新版本到本地,不會自動merge

 git fetch orgin master //將遠程倉庫的master分支下載到本地當前branch中

 git log -p master  ..origin/master //比較本地的master分支和origin/master分支的差別

 git merge origin/master //進行合並

這個命令會訪問遠程倉庫,從中拉取所有你還沒有的數據。 執行完成后,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合並或查看。

如果你使用git clone 命令克隆了一個倉庫,命令會自動將其添加為遠程倉庫(git remote -v)並默認以 “origin” 為簡寫。 所以,git fetch origin 會抓取克隆(或上一次抓取)后新推送的所有工作。 必須注意 git fetch 命令會將數據拉取到你的本地倉庫 - 它並不會自動合並或修改你當前的工作。 當准備好時你必須手動將其合並入你的工作。

如果你有一個分支設置為跟蹤一個遠程分支,可以使用 git pull命令來自動的抓取然后合並遠程分支到當前分支。 這對你來說可能是一個更簡單或更舒服的工作流程;默認情況下,git clone 命令會自動設置本地 master 分支跟蹤克隆的遠程倉庫的 master 分支(或不管是什么名字的默認分支)。 運行 git pull 通常會從最初克隆的服務器上抓取數據並自動嘗試合並到當前所在的分支。

 

2.git pull:相當於是從遠程獲取最新版本並merge到本地

git pull origin master    //相當於git fetch 和 git merge

 

注:用git pull更新代碼的話就比較簡單暴力了但是根據commit ID來看的話,他們實際的實現原理是不一樣的,所以不要用git pull,用git fetchgit merge更加安全

 

 


免責聲明!

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



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