这一节我们主要讲述远程仓库的操作,主要涉及remote clone push pull等命令
拉取完整远程仓库代码
在讲述怎么拉取远程仓库之前,首先介绍一个remote命令
git remote
查看已经存在的远程分支
此时我们没有任何的远程分支,所以显示为空
此时我们从克隆一个远程仓库代码下来
git clone 仓库地址
再执行git remote就有远程仓库信息了
git remote -v
git remote -v
以为“仓库别名 仓库地址”的格式列出所有远程仓库的详细信息
为啥要取别名?因为远程地址太长了,我们也不可能每次都在键盘上敲那么长的名字,用个短小的名字就方便很多。
由上面一堆的操作可以看出,git clone做了三件事情
1)把远程代码库完整下载到本地
2)自动把远程库命名成origin
3)初始化本地库(相当于 git init)
拉取部分代码
拉取部分主要就是以下几个命令
git init 仓库名称
git config core.sparsecheckout true
echo '目录名称*' >> .git/info/sparse-checkout
git remote add 仓库别名 仓库地址
git pull 远程仓库别名 远程分支名:本地分支名
因为没有执行clone命令,所以上面例举出来的git clone命令自动帮我们完成的三件事情都必须由我们自己完成。
首先就是init一个仓库
git init 仓库名称
拉取部分的代码的核心就是以下两行命令
设置允许git克隆子目录
git config core.sparsecheckout true
设置筛选条件
echo '目录名称*' >> .git/info/sparse-checkout
由于我们不是clone的仓库,git不会自动给远程仓库创建一个origin的别名,所以需要我们用remote命令自己创建远程仓库的别名。
git remote add 仓库别名 仓库地址
拉取代码
git pull 仓库别名 本地仓库名称
接下来我们就简单说下pull的用法
拉取代码(pull)和推送代码(push)
首先先说两个大家都知道的概念:
git pull -> 拉取远程仓库代码到本地仓库
git push -> 把本地仓库代码推送到远程仓库
我看过很多教程,他们都会提到这样的例子(git pull origin master / git push origin master),我不建议大家这样记忆,因为这里有两个假定,一是假定我们在master主干上操作,二是假定我们远程仓库的别名是origin。
但是有一天我们在某个分支上操作了呢?我们远程仓库名称不是origin了怎么办呢?
一个完整的push命令如下:
git push 远程仓库别名 本地分支名:远程分支名字
一个完整的pull命令如下:
git pull 远程仓库别名 远程分支名:本地分支名
如何记忆?
第一个参数都是远程仓库的别名,后面冒号可以想象成一个箭头
push是把本地代码推送到远程,那么就是本地:远程
pull是把远程代码拉取到本地,那么自然就是远程:本地
记全这个命令,无论分支或者别名是什么,你都可以顺利操作啦。
本地分支和远程分支的关联
如果觉得push和pull的参数过于麻烦,可以尝试把远程分支和本地分支关联起来,这样就直接可以用git push提交代码,git pull拉取代码了
git branch --set-upstream-to=远程分支地址 本地分支名
比如说你远程分支上有个名叫“branchA”的分支,你要和本地master分支关联起来,则你可以写成
git branch --set-upstream-to=remotes/origin/branchA master