git fetch
命令用于从另外一个存储库下载对象和引用。git
使用语法shell
git fetch [<options>] [<repository> [<refspec>…]] git fetch [<options>] <group> git fetch --multiple [<options>] [(<repository> | <group>)…] git fetch --all [<options>]
从一个或多个其余存储库中获取分支和/或标签(统称为“引用”)以及完成其历史所必需的对象。 远程跟踪分支已更新(Git术语叫作commit
),须要将这些更新取回本地,这时就要用到git fetch
命令。fetch
默认状况下,还会获取指向正在获取的历史记录的任何标签; 效果是获取指向您感兴趣的分支的标签。可使用--tags
或--no-tags
选项或经过配置远程.<name>.tagOpt
来更改此默认行为。 经过使用显式提取标签的refspec
,能够获取不指向您感兴趣的分支的标签。spa
git fetch
能够从单个命名的存储库或URL中获取,也能够从多个存储库中获取,若是给定了<group>
,而且配置文件中有一个远程<group>
条目。code
获取的参考名称以及它们所指向的对象名称被写入到.git/FETCH_HEAD
中。 此信息可能由脚本或其余git命令使用,如git-pull
。对象
如下是一些示例 -ip
1.更新远程跟踪分支rem
$ git fetch origin
上述命令从远程refs/heads/
命名空间复制全部分支,并将它们存储到本地的refs/remotes/ origin/
命名空间中,除非使用分支.<name>.fetch
选项来指定非默认的refspec
。it
2.明确使用refspecio
$ git fetch origin +pu:pu maint:tmp
此更新(或根据须要建立)经过从远程存储库的分支(分别)pu
和maint
提取来分支本地存储库中的pu
和tmp
。
即便没有快进,pu
分支将被更新,由于它的前缀是加号; tmp
不会。
3.在远程分支上窥视,无需在本地存储库中配置远程
$ git fetch git://git.kernel.org/pub/scm/git/git.git maint $ git log FETCH_HEAD
第一个命令从 git://git.kernel.org/pub/scm/git/git.git
从存储库中获取maint
分支,第二个命令使用FETCH_HEAD
来检查具备git-log
的分支。
4.将某个远程主机的更新
$ git fetch <远程主机名>
要更新全部分支,命令能够简写为:
$ git fetch
上面命令将某个远程主机的更新,所有取回本地。默认状况下,git fetch
取回全部分支的更新。若是只想取回特定分支的更新,能够指定分支名,以下所示 -
$ git fetch <远程主机名> <分支名>
好比,取回origin
主机的master
分支。
$ git fetch origin master
所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。好比origin
主机的master
分支,就能够用origin/master
读取。
git branch
命令的-r
选项,能够用来查看远程分支,-a
选项查看全部分支。
$ git branch -r origin/master $ git branch -a * master remotes/origin/master
上面命令表示,本地主机的当前分支是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
上面命令表示在当前分支上,合并origin/master
。