首頁 開發工具 Git 「git fetch」與「git pull」的區別

「git fetch」與「git pull」的區別

Jul 22, 2020 pm 05:59 PM
fetch git pull

「git fetch」與「git pull」的區別

git fetch和git pull都可以將遠端倉庫更新到本地那麼他們之間有何區別?想要弄清楚這個問題有有幾個概念不得不提。

FETCH_HEAD: 是一個版本鏈接,記錄在本地的一個檔案中,指向著目前已經從遠端倉庫取下來的分支的末端版本。

commit-id:在每次本地工作完成後,都會做一個git commit 操作來保存目前工作到本地的repo, 此時會產生一個commit-id ,這是一個能唯一標識一個版本的序號。使用git push後,這個序號也會同步到遠端倉庫。

有了以上的概念再來說git fetch

git fetch:這將更新git remote 中所有的遠端倉庫所包含分支的最新commit-id,將其記錄到.git/FETCH_HEAD檔案中
git fetch更新遠端倉庫的方式如下:

git fetch origin master:tmp 
//在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp 
//来比较本地代码与刚刚从远程下载下来的代码的区别
git merge tmp
//合并temp分支到本地的master分支
git branch -d temp
//如果不想保留temp分支 可以用这步删除
登入後複製

(1)如果直接使用git fetch,則步驟如下:

  • #建立並更新本機遠端分支。即建立並更新origin/xxx 分支,拉取程式碼到origin/xxx分支上。

  • 在FETCH_HEAD中設定目前分支-origin/目前分支對應,例如直接到時候git merge就可以將origin/abc合併到abc分支上。

(2)git fetch origin
只是手動指定了要fetch的remote。在不指定分支時通常預設為master

(3)git fetch origin dev 
指定遠端remote和FETCH_HEAD,並且只拉取該分支的提交。

這個指令會存取遠端倉庫,從中拉取所有你還沒有的資料。執行完成後,你將會擁有那個遠端倉庫中所有分支的引用,可以隨時合併或檢視。

如果你使用git clone 指令複製了一個倉庫,指令會自動將其新增為遠端倉庫(git remote -v)並預設以 “origin” 為簡寫。所以,git fetch origin 會抓取克隆(或上次抓取)後新推送的所有工作。必須注意 git fetch 指令會將資料拉取到你的本地倉庫 - 它並不會自動合併或修改你目前的工作。當準備好時你必須手動將其合併入你的工作中。

如果你有一個分支設定為追蹤一個遠端分支,可以使用 git pull指令來自動的抓取然後合併遠端分支到目前分支。這對你來說可能是一個更簡單或更舒適的工作流程;預設情況下,git clone 命令會自動設定本地 master 分支追蹤克隆的遠端倉庫的 master 分支(或不管是什麼名字的預設分支)。執行 git pull 通常會從最初複製的伺服器上抓取資料並自動嘗試合併到目前所在的分支。

git pull : 首先,基於本地的FETCH_HEAD記錄,比對本地的FETCH_HEAD記錄與遠端倉庫的版本號,然後git fetch 取得目前指向的遠端分支的後續版本的數據,然後再利用git merge將其與本地的當前分支合併。所以可以認為git pull是git fetch和git merge兩個步驟的結合。

git pull的用法如下:

git pull <远程主机名> <远程分支名>:<本地分支名>
//取回远程主机某个分支的更新,再与本地的指定分支合并。
登入後複製

因此,與git pull相比git fetch相當於是從遠端取得最新版本到本地,但不會自動merge。如果需要有選擇的合併git fetch是更好的選擇。效果相同時git pull會更為快速。

註:用git pull更新程式碼的話就比較簡單暴力了但是根據commit ID來看的話,他們實際的實作原理是不一樣的,所以不要用git pull,用git fetch和git merge更加安全。

推薦教學:《Git

以上是「git fetch」與「git pull」的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言中用於浮點數運算的庫有哪些? Go語言中用於浮點數運算的庫有哪些? Apr 02, 2025 pm 02:06 PM

Go語言中用於浮點數運算的庫介紹在Go語言(也稱為Golang)中,進行浮點數的加減乘除運算時,如何確保精度是�...

h5項目怎麼運行 h5項目怎麼運行 Apr 06, 2025 pm 12:21 PM

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Gitee Pages靜態網站部署失敗:單個文件404錯誤如何排查和解決? Apr 04, 2025 pm 11:54 PM

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

Beego ORM中如何指定模型關聯的數據庫? Beego ORM中如何指定模型關聯的數據庫? Apr 02, 2025 pm 03:54 PM

在BeegoORM框架下,如何指定模型關聯的數據庫?許多Beego項目需要同時操作多個數據庫。當使用Beego...

Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Go語言中哪些庫是由大公司開發或知名的開源項目提供的? Apr 02, 2025 pm 04:12 PM

Go語言中哪些庫是大公司開發或知名開源項目?在使用Go語言進行編程時,開發者常常會遇到一些常見的需求,�...

H5頁面製作是否需要持續維護 H5頁面製作是否需要持續維護 Apr 05, 2025 pm 11:27 PM

H5頁面需要持續維護,這是因為代碼漏洞、瀏覽器兼容性、性能優化、安全更新和用戶體驗提升等因素。有效維護的方法包括建立完善的測試體系、使用版本控制工具、定期監控頁面性能、收集用戶反饋和製定維護計劃。

在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? 在Go語言中使用Redis Stream實現消息隊列時,如何解決user_id類型轉換問題? Apr 02, 2025 pm 04:54 PM

Go語言中使用RedisStream實現消息隊列時類型轉換問題在使用Go語言與Redis...

如何提高jieba分詞在景區評論分析中的準確性? 如何提高jieba分詞在景區評論分析中的準確性? Apr 02, 2025 am 07:09 AM

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

See all articles