上一节介绍了如果创建远程仓库,这一节我们再来学习一些远程操作详解详解。
Git有很多优势,其中之一就是远程操作非常简便。在这里,列出几个远程操作的指令,非常方便。在这里,首先是要感谢阮一峰学长的blog。
git clone
git clone https://github.com/jquery/jquery.git
该命令会在本地主机生成一个目录,与远程主机的版本库同名。如果要指定不同的目录名,可以将目录名作为git clone命令的第二个参数。
git clone <版本库的网址> <本地目录名>
git remote
为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。不带选项的时候,git remote命令列出所有远程主机。
git remote
origin
git fetch
一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令。
git fetch origin
上面命令将某个远程主机的更新,全部取回本地。git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。比如说我们想取回取回origin主机的staging分支。
git fetch origin staging
所取回的更新,在本地主机上要用”远程主机名/分支名”的形式读取。比如origin主机的master,就要用origin/staging读取。
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
git branch -r
*origin/master
git branch -a
* master
* remotes/origin/master
git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git pull origin next:master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
git fetch origin
git merge origin/next
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
Git也允许手动建立追踪关系:
git branch --set-upstream master origin/next
如果当前分支只有一个追踪分支,连远程主机名都可以省略:
git pull
git拉取远程分支并创建本地分支
在项目,我们常常遇到一种情况,那就是某个同事在远程仓库创建了一个分支,我们需要从远端把分支拉取下来。
首先,我们回顾一下查看远程分支的方法:
git branch -r
然后是拉取远程分支并创建本地分支,这也算是对git fetch方法的一个回顾:
git checkout -b 本地分支名x origin/远程分支名x
使用该方式会在本地新建分支x,并自动切换到该本地分支x。采用此种方法建立的本地分支会和远程分支建立映射关系。
git fetch origin 远程分支名x:本地分支名x
使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout,采用此种方法建立的本地分支不会和远程分支建立映射关系。
回顾一下手动建立追踪关系的git指令:
git branch --set-upstream 本地分支名x origin/本地分支名x