Git 远程仓库
-
Git 协议
- SSH协议
- 同时支持读和写的网络协议,Git默认使用的网络协议
- 优点:安全性高,数据传输都是加密和授权的
- 缺点:不能匿名访问,读也要授权,不利于开源的项目 - Git协议
- Git自带的网络协议:适用于不需要对读进行授权的大型项目
- 优点:传输速度最快
- 缺点:授权机制不灵活,要么不能推送,要么都能推送 - HTTP/HTTPS协议
- 优点:容易架设,适用于提供只读的仓库、防火墙穿透强
- 缺点:传输速度慢、开销大
- SSH协议
-
SSH key
- 服务器的一种授权访问机制
- id_rsa 是私有密钥,保存在用户目录下
- id_rsa.pub 是公有密钥,放到Github & Gitee服务器
-
SSH公钥生成
- 先看用户目录下:~/.ssh下是否有id_rsa、id_rsa.pub
- 如没有,使用如下命令生成
- ssh-keygen -t rsa -C “your_email@example.com”
- 私钥保存在用户目录下,SSH连接服务器时使用
- 公钥放到服务器,服务器不同配置管理不一样
- 验证是否成功,输入以下命令:
$ ssh -T git@github.com
Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.
-
克隆仓库到本地
- git clone /path/to/repository
- git@github.com:xxxx/git_lesson.git
- ssh://git@github.com:xxxx/git_lesson.git
- https://github.com/xxxx/git_lesson.git
- 实例
- git clone /path/to/repository
git clone git@github.com:Shair168/demo.git
Cloning into ‘demo’…
remote: Enumerating objects: 79, done.
remote: Counting objects: 100% (79/79), done.
remote: Compressing objects: 100% (37/37), done.
remote: Total 79 (delta 30), reused 75 (delta 26), pack-reused 0
Receiving objects: 100% (79/79), 6.13 KiB | 142.00 KiB/s, done.
Resolving deltas: 100% (30/30), done.
-
远程仓库基本操作
- 从远程仓库克隆
- git clone repo_addr
- 添加远程仓库
- Git remote add origin git@github.com:wangwit/test.git
- 从远程仓库拉取数据
- 自动本地master分支并跟踪远程仓库master分支:git clone origin
- 仅仅是拉取,不合并到本地:git fetch
- 自动拉取某个分支更新:git pull
- 推送数据到远程仓库
- 默认是origin和master分支:git push origin master
- 查看远程仓库信息
- 参数:git remote -v
- Git remote show origin
- 远程仓库的删除
- Git remote rm respority
- 远程仓库重命名
- Git remote rename old new
- 从远程仓库克隆
-
远程仓库基本操作实例
- 查看当前的远程库
$ git remote
origin
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)
- 推送到远程仓库
$ touch runoob-test.txt #添加文件
$ git add runoob-test.txt
$ git commit -m “添加到远程”
master 69e702d] 添加到远程
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 runoob-test.txt
$ git push origin master #推送到 Github
- 删除远程仓库
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)
添加仓库 origin2
$ git remote add origin2 git@github.com:tianqixin/runoob-git-test.git
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)
origin2 git@github.com:tianqixin/runoob-git-test.git (fetch)
origin2 git@github.com:tianqixin/runoob-git-test.git (push)
删除仓库 origin2
$ git remote rm origin2
$ git remote -v
origin git@github.com:tianqixin/runoob-git-test.git (fetch)
origin git@github.com:tianqixin/runoob-git-test.git (push)