前两天主要介绍了对本地的Git
仓库的一些基础操作,今天将会介绍对远程仓库的基本操作。
7 远程仓库的使用
在平常的项目中,我们常常会与远程仓库打交道。远程仓库是指在互联网或者其他网络服务器上托管的项目版本库。通过远程仓库我们可以与其他项目团队成员共享工作成果。对于远程仓库的基础的使用,我们需要了解如何添加远程仓库、查看项目中使用了哪些远程仓库、移除不再使用的远程仓库、管理远程仓库的远程分支等等操作。
7.1 克隆远程仓库
在前面的文章中提过初始化Git
项目的方式之一就是克隆远程仓库,使用命令为:
$ git clone <url>
7.2 显示远程仓库
使用命令git remote
命令可以查看当前项目中设置哪些远程仓库,可以追加-v
选项查看远程仓库的URL
地址
$ git remote
origin
$ git remote -v
origin https://github.com/jiaoxn/vue-next.git (fetch)
origin https://github.com/jiaoxn/vue-next.git (push)
如果使用git clone
来初始化本地的Git
仓库,则origin
是克隆的远程仓库的默认名称,并没有特别的含义。如果使用git clone -o <alias_name>
为远程仓库设置别名,则此时git remote
的输出为设置的别名。
7.3 添加远程仓库
执行git remote add [shortname] [url]
添加远程仓库,其中shortname
为远程仓库的引用名称。
$ git remote add vue-next https://github.com/jiaoxn/vue-next.git
$ git remote -v
origin https://gitee.com/jiaoxn/git_learn_note_202102.git (fetch)
origin https://gitee.com/jiaoxn/git_learn_note_202102.git (push)
vue-next https://github.com/jiaoxn/vue-next.git (fetch)
vue-next https://github.com/jiaoxn/vue-next.git (push)
7.4 从远程仓库拉取数据
Git
中提供了2种从远程仓库拉取数据的方式:git pull <remote_name> <remote_branch_name>:<local_branch_name>
和git fetch <remote_name> <remote_branch_name>
。
如果使用git clone <url>
克隆远程项目,则remote_name
为origin
;如果使用git clone -o <alias_name> <url>
,则remote_name
为alias_name
;如果使用git remote add [shortname] [url]
添加的远程仓库,则remote_name
为shortname
。
git fetch
会从对应的远程仓库中获取本地仓库没有的数据,也包括远程仓库中含有的分支,需要注意的是,该命令只是获取数据到本地,并不会与本地工作区内的文件合并,如果想和当前本地分支合并,需要后续执行git merge
命令。
git pull
也会从远程仓库自动获取数据,但是会将远程仓库分支合并到当前本地分支,可以认为该命令是git fetch
和git merge
两个步骤的结合。
7.5 将本地数据推送到远程仓库
可以使用git push [remote-name] [local-branch-name]
命令将本地数据推送到远程仓库,例如:可以使用git push origin master
可以将本地的master
分支推动到origin
对应的远程仓库。
如果想将本地数据顺利的推送至远程仓库,需要注意的是:
- 当前用户需要拥有克隆下来的远程仓库的读写权限
- 从远程仓库仓库克隆后,在提交之前,如果远程仓库被修改了,那么这次推送会不成功,需要拉取最新的远程仓库,合并到自己的工作目录中,然后在将合并后的版本内容再推送到远程仓库
7.6 检查远程仓库
在7.2节使用git remote -v
可以查看项目中设置的远程仓库的名称和对应的URL
地址。这里可以使用git remote show [remote-name]
,显示更多的远程的信息。
$ git remote show origin
* remote origin
Fetch URL: https://github.com/jiaoxn/vue-next.git
Push URL: https://github.com/jiaoxn/vue-next.git
HEAD branch: master
Remote branches:
>linusborg/improve-render-warning-missing-props tracked
add-license-files-to-all-packages-2650 tracked
akryum/on-server-prefetch tracked
dependabot/npm_and_yarn/babel/parser-7.12.11 tracked
dependabot/npm_and_yarn/babel/types-7.12.12 tracked
dependabot/npm_and_yarn/estree-walker-2.0.2 tracked
dependabot/npm_and_yarn/ini-1.3.8 tracked
dependabot/npm_and_yarn/node-notifier-8.0.1 tracked
feat/expose tracked
linusborg/feat-warn-reserved-properties tracked
linusborg/fix-app-unmount-memleak-2907 tracked
linusborg/handle-readonly-type-attr-on-textarea-2766 tracked
linusborg/map-shallow-proxies-seperately-2843 tracked
master tracked
postcss-8 tracked
reactive-let tracked
script-setup-2 tracked
test/types/props-default tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
输出结果中不仅仅显示了远程仓库的名称和URL
地址,并列出了当前项目追踪了远程仓库的哪些分支,以及当前使用的分支名称。
这里可以注意一下最后4行的输出内容,其中最后2行的输出内容指出了,当执行git push
命令是会将本地仓库中的master
分支推送至远程仓库中的master
分支;最后3-4行的输出内容指出了,当执行git pull
命令时,会将远程仓库的master
拉取并合并到本地仓库的master
中。
7.7 重命名远程仓库
可以使用命令git remote rename <remote_name> <new_remote_name>
更新远程仓库的名称,更新时也会更新远程分支的名称,例如更新后,之前的<remote_name>/master
分支名称会变成为<new_remote_name>/master
。
7.8 删除远程仓库
可以使用命令git remote rm <remote_name>
删除指定的远程仓库。