Git远程操作的正确姿势
2017-03-06 18:00
183 查看
git clone
远程操作的第一步,通常需要从远程主机克隆一个版本库
git clone <版本库地址>
例如:
远程操作的第一步,通常需要从远程主机克隆一个版本库
git clone <版本库地址>
例如:
git clone https://github.com/jquerydd/jquery.git[/code]
该命令会在本地生成一个与远程主机版本库同名的目录,如果要指定不同的名称,如下
git clone <版本库地址> <本地新名称>
git clone支持多种协议,具体见下图
通常来说,Git协议下载速度最快,SSH协议用于需要用户认证的场合
git remote
为了便于管理,Git要求每个主机都必须指定一个主机名,git remote命令就用于管理主机名
不带选项的时候,git remote命令列出所有远程主机,使用-v选项,可以查看远程主机的网址
上图表示,当前只有一台远程主机origin,以及他的地址
克隆版本库的时候,所使用的远程主机自动被Git命名为origin,如果想使用其他主机名,需要git clone命令加上-o选项git remote show <主机名> 可以查看该主机的详细信息
其他的命令,代表的意思很清晰:git remote add <主机名> <网址> git remote rm <主机名> git remote rename <原主机名> <新主机名>
git fetch
一旦远程主机有了更新,也就是commit,需要将这些、跟新取回本地,这个时候就要用到git fetch
git fetch <远程主机名> 表示将某个远程主机的更新全部取回本地
而且,还可以指定分支名称,来取回特定分支的跟新,比如我们只想取回master分支的更新git fetch origin master
所取回的更新,在本地主机上要用“远程主机名/分支名”的形式读取,如origin/mastergit branch -r 可以查看远程分支 git branch -a 可以查看所有分支
上图中的绿色master前有一个星号,代表现在我们位于master分支新建分支: git branch v1.0.0 提交分支: git push origin v1.0.0 切换分支: git checkout v1.0.0 删除本地分支: git branch -d v1.0.0 删除远程分支: git push origin :v1.0.0
git pull
git pull命令的作用是取回远程主机某个分支的更新,在于本地的指定分支合并,完整格式如下
git pull <远程主机名> <远程分支名>:<本地分支名>
例如,如果你要取回origin主机的v1.0分支,与本地的master分支合并,需要写成这样:git pull origin next:master
如果是与当前分支合并,则冒号后可省略:git pull origin next
这里多说一句,在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。
Git也允许手动建立追踪关系:git branch --set-upstream master origin/next
上面的命令指定master分支追踪origin/next分支
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名:git pull origin
如果当前分支只有一个追踪分支,连远程主机名都可以省略:git pull
git push
git push命令用来将本地分支的跟新推送到远程主机git push <远程主机名><本地分支名>:<远程分支名>
如果省略远程分支名,则表示将本地分支推送与之存在追踪关系的远程分支(通常两者同名)
如果改远程分支不存在,则会被新建git push origin master
上面的命令表示:将本地的master分支推送到origin主机的master分支,如果后者不存在,则会被新建
如果当前分支和远程分支之间存在追踪关系,则本地分支和远程分支都可以省略git push origin
如果当前分支只有一个追踪分支,那么主机名都可以省略git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项制定一个默认主机,这样后面就可以不加任何蚕食使用git push
最后,git push不能直接推送tags,除非使用-tags选项git push origin --tags