鍍金池/ 教程/ Java/ git fetch命令
Git移動(dòng)操作
Git推送(push)操作
git rebase命令
Git提交更改
git rm命令
Git使用前配置
git mergetool命令
git tag命令
Git歷史(簡(jiǎn)史)
git show命令
Git隱藏(Stash)操作
git checkout命令
git fetch命令
git clone命令
git branch命令
Git安裝設(shè)置
git stash命令
Git標(biāo)簽操作
Git處理沖突
Git刪除操作
git commit命令
Git遠(yuǎn)程操作詳解
Git克隆操作
git diff命令
Git工作流程
git describe命令
Git管理分支
git add命令
git pull命令
git mv命令
git merge命令
git status命令
Git不同平臺(tái)換行符問(wèn)題
Git補(bǔ)丁操作
Git查看更改
Git執(zhí)行變更操作
git log命令
Git修正錯(cuò)誤
git push命令
Git快速入門
git init命令
Git創(chuàng)建存儲(chǔ)庫(kù)
Git重命名操作
git submodule命令
git help命令
git config命令
Git更新操作
Git基礎(chǔ)概念
git remote命令
git reset命令
Git教程
git shortlog命令
Git基礎(chǔ)和原理

git fetch命令

git fetch命令用于從另一個(gè)存儲(chǔ)庫(kù)下載對(duì)象和引用。

使用語(yǔ)法

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

描述

從一個(gè)或多個(gè)其他存儲(chǔ)庫(kù)中獲取分支和/或標(biāo)簽(統(tǒng)稱為“引用”)以及完成其歷史所必需的對(duì)象。 遠(yuǎn)程跟蹤分支已更新(Git術(shù)語(yǔ)叫做commit),需要將這些更新取回本地,這時(shí)就要用到git fetch命令。

默認(rèn)情況下,還會(huì)獲取指向正在獲取的歷史記錄的任何標(biāo)簽; 效果是獲取指向您感興趣的分支的標(biāo)簽??梢允褂?code>--tags或--no-tags選項(xiàng)或通過(guò)配置遠(yuǎn)程.<name>.tagOpt 來(lái)更改此默認(rèn)行為。 通過(guò)使用顯式提取標(biāo)簽的refspec,可以獲取不指向您感興趣的分支的標(biāo)簽。

git fetch可以從單個(gè)命名的存儲(chǔ)庫(kù)或URL中獲取,也可以從多個(gè)存儲(chǔ)庫(kù)中獲取,如果給定了<group>,并且配置文件中有一個(gè)遠(yuǎn)程<group>條目。

獲取的參考名稱以及它們所指向的對(duì)象名稱被寫入到.git/FETCH_HEAD中。 此信息可能由腳本或其他git命令使用,如git-pull。

示例

以下是一些示例 -

1.更新遠(yuǎn)程跟蹤分支

$ git fetch origin

上述命令從遠(yuǎn)程refs/heads/命名空間復(fù)制所有分支,并將它們存儲(chǔ)到本地的refs/remotes/ origin/命名空間中,除非使用分支.<name>.fetch選項(xiàng)來(lái)指定非默認(rèn)的refspec。

2.明確使用refspec

$ git fetch origin +pu:pu maint:tmp

此更新(或根據(jù)需要?jiǎng)?chuàng)建)通過(guò)從遠(yuǎn)程存儲(chǔ)庫(kù)的分支(分別)pumaint提取來(lái)分支本地存儲(chǔ)庫(kù)中的putmp。

即使沒(méi)有快進(jìn),pu分支將被更新,因?yàn)樗那熬Y是加號(hào); tmp不會(huì)。

3.在遠(yuǎn)程分支上窺視,無(wú)需在本地存儲(chǔ)庫(kù)中配置遠(yuǎn)程

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

第一個(gè)命令從 git://git.kernel.org/pub/scm/git/git.git 從存儲(chǔ)庫(kù)中獲取maint分支,第二個(gè)命令使用FETCH_HEAD來(lái)檢查具有git-log的分支。

4.將某個(gè)遠(yuǎn)程主機(jī)的更新

$ git fetch <遠(yuǎn)程主機(jī)名>

要更新所有分支,命令可以簡(jiǎn)寫為:

$ git fetch

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

$ git fetch <遠(yuǎn)程主機(jī)名> <分支名>

比如,取回origin主機(jī)的master分支。

$ git fetch origin master

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

git branch命令的-r選項(xiàng),可以用來(lái)查看遠(yuǎn)程分支,-a選項(xiàng)查看所有分支。

$ git branch -r
origin/master

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

上面命令表示,本地主機(jī)的當(dāng)前分支是master,遠(yuǎn)程分支是origin/master

取回遠(yuǎn)程主機(jī)的更新以后,可以在它的基礎(chǔ)上,使用git checkout命令創(chuàng)建一個(gè)新的分支。

$ git checkout -b newBrach origin/master

上面命令表示,在origin/master的基礎(chǔ)上,創(chuàng)建一個(gè)新分支:newBrach。

此外,也可以使用git merge命令或者git rebase命令,在本地分支上合并遠(yuǎn)程分支。

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

上面命令表示在當(dāng)前分支上,合并origin/master