您的位置:首页 > 其它

Git远程操作的正确姿势

2017-03-06 18:00 183 查看
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/master

git 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git