自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

說說對Git pull 和 Git fetch 的理解?有什么區(qū)別?

開發(fā) 前端
一般遠端倉庫里有新的內容更新,當我們需要把新內容下載的時候,就使用到git pull或者git fetch命令.

[[417335]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰。轉載本文請聯(lián)系JS每日一題公眾號。

一、是什么

先回顧兩個命令的定義

  • git fetch 命令用于從另一個存儲庫下載對象和引用
  • git pull 命令用于從另一個存儲庫或本地分支獲取并集成(整合)

再來看一次git的工作流程圖,如下所示:

可以看到,git fetch是將遠程主機的最新內容拉到本地,用戶在檢查了以后決定是否合并到工作本機分支中

而git pull 則是將遠程主機的最新內容拉下來后直接合并,即:git pull = git fetch + git merge,這樣可能會產生沖突,需要手動解決

在我們本地的git文件中對應也存儲了git本地倉庫分支的commit ID和 跟蹤的遠程分支的commit ID,對應文件如下:

  • .git/refs/head/[本地分支]
  • .git/refs/remotes/[正在跟蹤的分支]

使用 git fetch更新代碼,本地的庫中master的commitID不變

但是與git上面關聯(lián)的那個orign/master的commit ID發(fā)生改變

這時候我們本地相當于存儲了兩個代碼的版本號,我們還要通過merge去合并這兩個不同的代碼版本

也就是fetch的時候本地的master沒有變化,但是與遠程倉關聯(lián)的那個版本號被更新了,接下來就是在本地merge合并這兩個版本號的代碼

相比之下,使用git pull就更加簡單粗暴,會將本地的代碼更新至遠程倉庫里面最新的代碼版本,如下圖:

二、用法

一般遠端倉庫里有新的內容更新,當我們需要把新內容下載的時候,就使用到git pull或者git fetch命令

fetch

用法如下:

  1. git fetch <遠程主機名> <遠程分支名>:<本地分支名> 

例如從遠程的origin倉庫的master分支下載代碼到本地并新建一個temp分支

  1. git fetch origin master:temp 

如果上述沒有冒號,則表示將遠程origin倉庫的master分支拉取下來到本地當前分支

這里git fetch不會進行合并,執(zhí)行后需要手動執(zhí)行git merge合并,如下:

  1. git merge temp 

pull

兩者的用法十分相似,pull用法如下:

  1. git pull <遠程主機名> <遠程分支名>:<本地分支名> 

例如將遠程主機origin的master分支拉取過來,與本地的branchtest分支合并,命令如下:

  1. git pull origin master:branchtest 

同樣如果上述沒有冒號,則表示將遠程origin倉庫的master分支拉取下來與本地當前分支合并

三、區(qū)別

相同點:

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

不同點:

  • git pull是相當于從遠程倉庫獲取最新版本,然后再與本地分支merge,即git pull = git fetch + git merge
  • 相比起來,git fetch 更安全也更符合實際要求,在 merge 前,我們可以查看更新情況,根據實際情況再決定是否合并

參考文獻

 

  • https://zhuanlan.zhihu.com/p/123370920
  • https://segmentfault.com/a/1190000017030384
  • https://juejin.cn/post/6844903921794859021

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2024-06-26 12:56:06

2021-07-08 06:51:29

React函數組件

2021-08-17 07:15:16

Git RebaseGit Merge面試

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-08-10 08:34:12

Git ForkBranch

2022-02-10 09:56:33

git revertgit resetGit

2021-08-09 07:47:40

Git面試版本

2022-08-31 08:33:54

Bash操作系統(tǒng)Linux

2023-12-13 13:31:00

useEffect對象瀏覽器

2022-02-08 10:27:31

URLURI瀏覽器

2022-02-22 10:45:36

URIURLLinux

2021-12-17 14:40:02

while(1)for(;;)語言

2024-03-05 18:59:59

前端開發(fā)localhost

2022-08-02 08:23:37

SessionCookies

2024-05-27 00:40:00

2022-02-27 15:33:22

安全CASBSASE

2024-09-09 13:10:14

2021-05-16 14:26:08

RPAIPACIO

2020-03-09 20:56:19

LoRaLoRaWAN無線技術

2022-06-06 14:53:02

LoRaLoRaWAN
點贊
收藏

51CTO技術棧公眾號