一旦远程主机的版本库有了更新(Git 术语叫做 commit),需要将这些更新取回本地,这时就要用到 git fetch 命令。
git fetch <远程主机名>
上面命令将某个远程主机的更新,全部取回本地。git fetch 命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。
默认情况下,git fetch 取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
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 的基础上,创建一个新分支。此外,也可以使用 git merge 命令或者 git rebase 命令,在本地分支上合并远程分支:
git merge origin/master
# 或者
git rebase origin/master
上面命令表示在当前分支上,合并 origin/master。
git pull 相当于是从远程获取最新版本并 merge 到本地:
git pull origin master
上述命令其实相当于 git fetch 和 git merge。在实际使用中,git fetch 更安全一些,因为在 merge 前,我们可以查看更新情况,然后再决定是否合并。