1. 程式人生 > >git fetch 命令

git fetch 命令

通過 shell tor repo 信息 class 提取 ron 顯式

git fetch命令用於從另一個存儲庫下載對象和引用。

使用語法

git fetch [<options>] [<repository> [<refspec>…]]
git fetch [<options>] <group>
git fetch --multiple [<options>] [(<repository> | <group>)…]
git fetch --all [<options>]
Shell

描述

從一個或多個其他存儲庫中獲取分支和/或標簽(統稱為“引用”)以及完成其歷史所必需的對象。 遠程跟蹤分支已更新(Git術語叫做commit

),需要將這些更新取回本地,這時就要用到git fetch命令。

默認情況下,還會獲取指向正在獲取的歷史記錄的任何標簽; 效果是獲取指向您感興趣的分支的標簽。可以使用--tags--no-tags選項或通過配置遠程.<name>.tagOpt 來更改此默認行為。 通過使用顯式提取標簽的refspec,可以獲取不指向您感興趣的分支的標簽。

git fetch可以從單個命名的存儲庫或URL中獲取,也可以從多個存儲庫中獲取,如果給定了<group>,並且配置文件中有一個遠程<group>條目。

獲取的參考名稱以及它們所指向的對象名稱被寫入到.git/FETCH_HEAD

中。 此信息可能由腳本或其他git命令使用,如git-pull

示例

以下是一些示例 -

1.更新遠程跟蹤分支

$ git fetch origin
Shell

上述命令從遠程refs/heads/命名空間復制所有分支,並將它們存儲到本地的refs/remotes/ origin/命名空間中,除非使用分支.<name>.fetch選項來指定非默認的refspec

2.明確使用refspec

$ git fetch origin +pu:pu maint:tmp
Shell

此更新(或根據需要創建)通過從遠程存儲庫的分支(分別)pumaint提取來分支本地存儲庫中的putmp

即使沒有快進,pu分支將被更新,因為它的前綴是加號; tmp不會。

3.在遠程分支上窺視,無需在本地存儲庫中配置遠程

$ git fetch git://git.kernel.org/pub/scm/git/git.git maint
$ git log FETCH_HEAD
Shell

第一個命令從 git://git.kernel.org/pub/scm/git/git.git 從存儲庫中獲取maint分支,第二個命令使用FETCH_HEAD來檢查具有git-log的分支。

4.將某個遠程主機的更新

$ git fetch <遠程主機名>
Shell

要更新所有分支,命令可以簡寫為:

$ git fetch
Shell

上面命令將某個遠程主機的更新,全部取回本地。默認情況下,git fetch取回所有分支的更新。如果只想取回特定分支的更新,可以指定分支名,如下所示 -

$ git fetch <遠程主機名> <分支名>
Shell

比如,取回origin主機的master分支。

$ git fetch origin master
Shell

所取回的更新,在本地主機上要用”遠程主機名/分支名”的形式讀取。比如origin主機的master分支,就可以用origin/master讀取。

git branch命令的-r選項,可以用來查看遠程分支,-a選項查看所有分支。

$ git branch -r
origin/master

$ git branch -a
* master
  remotes/origin/master
Shell

上面命令表示,本地主機的當前分支是master,遠程分支是origin/master

取回遠程主機的更新以後,可以在它的基礎上,使用git checkout命令創建一個新的分支。

$ git checkout -b newBrach origin/master

上面命令表示,在origin/master的基礎上,創建一個新分支:newBrach

此外,也可以使用git merge命令或者git rebase命令,在本地分支上合並遠程分支。

$ git merge origin/master
# 或者
$ git rebase origin/master
Shell

上面命令表示在當前分支上,合並origin/master

git fetch 命令