Git-进阶-远程仓库的使用
一、远程仓库怎么玩
1. 自己搭建一个运行Git的服务器
Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,但肯定有一台机器有着最原始的版本库,然后别的机器来克隆这个原始版本库,这样子就没有主次之分!因此,很多时候,我们会找一台电脑来充当服务器的角色,每天24小时开机,便于其他人从这个“服务器”仓库克隆到自己的电脑上,并且各自把各自的提交推送到服务器仓库,也从服务器仓库中拉取别人的提交。
2. 注册GitHub免费获得Git远程仓库
"GitHub是一群有趣的人在做的有趣的事,如果只把GitHub当做一个Git服务器,实在暴殄天物。"
GitHub是一个面向开源及私有软件项目的托管平台,因为支持Git作为唯一的版本库格式进行托管,故名为GitHub。
Git的吉祥物是由小章鱼和小猫组合而成,名字叫做Octocat(章鱼猫)。
二、搭通自己的电脑与GitHub的传输通道
1.步骤
第1步:创建SSH Key
在用户主目录下,看看有没有.ssh
目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell
(Window下打开Git Bash
),创建SSH Key:
$ ssh-keygen -t rsa "youremail@example.com"
然后一路回车,使用默认值即可,密码可不用设置。
成功:可在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是 SSH Key 的密钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第2步:在GitHub放入你的SSH Key
登陆GitHub,打开Account settings
-> SSH Keys
页面:点Add SSH Key
,填上任意Title,在Key文本框里粘贴 id_rsa.pub 文件的内容。保存即可。
2.为什么GitHub需要SSH Key?
因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
提示 :在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能修改)。所以,建议不要把敏感信息放进去。
3.不想让别人看到你的Git库?
如果你不想让别人看到Git库,有两个办法,一个是付费,让GitHub把公开的仓库变成私有的,这样别人看不见(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见(公司内部开发利器)。
三、添加远程仓库
1.情景
本地有一个Git仓库 -> 在GitHub创建一个仓库 -> 让这两个仓库进行远程同步
(这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。)
2.步骤
第1步 创建新库
确定好本地上要远程添加的仓库myrepo
,登陆GitHub,然后在右上角找到Create a new repo
按钮,创建一个新的仓库:
第2步 设置新库
在创建新仓库页面在 Repository name 填入myrepo
,其他保持默认设置,点击下面的绿色按钮Create repository
,就成功创建了一个新的Git仓库:
在上图中,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
第3步 本地关联
于是,根据GitHub的提示,在本地的myrepo
仓库下运行命令:
$ git remote add origin git@github.com:dopppler/myrepo.git
提示 :注意替换成你的名字,否则关联的我的远程库,关联没有问题,但是你以后是推送不上去的,因为你的SSH Key公钥不在我的账号列表中。
第4步 本地推送
把本地库的所有内容推送到远程库上:
把本地库的内容推送到远程,用git push
命令。
实际上是把当前分支
master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送到远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
推送成功后,就可以在GitHub页面中看到远程库的内容已经和本地一样了:
从现在起,只要本地作了提交,就可以通过命令: $ git push origin master
把本地
master
分支的最新修改推送至GitHub,至此,你就拥有了真正的分布式版本库!
提示:第一次使用Git的clone
或者push
命令连接GitHub时,会得到一个警告,这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要确认GitHub的Key指纹是否真的来自GitHub的服务器,输入yes
回车即可。随后,Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表中,后面的操作不会再出现警告了。
3.总结
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
关联后,使用命令git push -u origin master
第一次推送master分支的所有内容。
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改。
分布式版本系统的最大好处之一 :在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的。当有网络的时候,再把本地提交推送一下就完成了同步,太方便了。
四、从远程库克隆
1.情景
当我们从零开发时,一般会这样做:先创建远程库 -> 从远程库克隆到本地
2.步骤
第1步 创建新库
在GitHub创建一个新的仓库。
注:勾选下面的选项
Initialze this repository with a README
,GitHub就会自动为我们创建一个README.md文件。
第2步 本地克隆
用命令git clone
克隆一个本地库。
$ git clone git@github.com:dopppler/hellogithub.git
提示:注意把Git的地址换成自己的。
如果是多人协作开发,那么每个人各自从远程克隆一份就可以了。
也许你还注意到,GitHub给出的地址不止一个,还可以用https://github.com/dopppler/hellogithub.git
这样的地址。实际上,Git支持多种协议,默认的git://
使用 ssh,但也可以使用 https 等其它协议。
使用 https 除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放 http 端口的公司内部就无法使用 ssh协议而只能用 https。
3.总结
要克隆一个仓库,首先必须知道仓库的地址,然后使用 git clone
命令去克隆。
Git支持多种协议,包括 https ,但通过 ssh 支持的原生git协议速度最快。
详细教程请戳这里:Git教程 - 廖雪峰的官方网站
参考资料
github - 百度百科
ssh(安全外壳协议)- 百度百科
What are GitHub's SSH key fingerprints? - GitHub
GitHub 吉祥物章鱼猫(Octocat)的来历是什么? - 知乎
Git-进阶-远程仓库的使用的更多相关文章
- Git 进阶 —— 远程仓库
一.远程仓库怎么玩 1. 自己搭建一个运行Git的服务器 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,但肯定有一台机器有着最原始的版本库,然后别的机器来克隆这个原始版本库,这 ...
- git 切换远程仓库,以及碰到的一个问题。
git 切换远程仓库出现如下问题: $ git checkout -b localdev origin/dev fatal: Cannot update paths and switch to bra ...
- Git从远程仓库里拉取一条本地不存在的分支方法
Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...
- git学习——远程仓库操作
查看当前的远程库——git remote 列出了仅仅是远程库的简单名字 可以加上-v 现实对应的克隆地址 添加远程仓库——git remote add [shortname] [url] git re ...
- git从远程仓库中更新代码到本地仓库
git从远程仓库中更新代码到本地仓库 有时候在使用git pull的时候,会莫名才报错.查了很多资料,尝试过git的很多命令.包括git fetch命令,都会报同样的错.最后终于发现了一条捷径,由网友 ...
- [转]git修改远程仓库地址
原文链接:http://www.cnblogs.com/lazb/articles/5597878.html 问:Coding远程仓库地址变了,本地git仓库地址如何更新为最新地址 git修改远程仓库 ...
- 为git创建远程仓库
首先生成ssh公钥: 将公钥添加到git: 测试秘钥是否通过: 然后就可以到web界面看到标注的地方被绿了: 但是我的没有绿,不知道为啥,难道没有女朋友的原因吗? rm -rf .ssh 重来好几遍都 ...
- git从远程仓库拉取内容或向远程仓库上传内容
一.将本地文件上传到远程仓库步骤 git init git add . git commit -m "初始框架" git remote add origin https://git ...
- Git 克隆远程仓库到本地
Git 克隆远程仓库到本地 参考 $ git clone --help https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7% ...
- git清空远程仓库
需求背景:因为用jenkins连接了git仓库,有时候job构建出现问题,需要排查问题,但是呢,真实的项目代码量非常pang大,所以就需要建1个测试仓库,使用最少量的代码能复现自己的问题就好. 这就需 ...
随机推荐
- FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
官网:http://ffmpeg.org 一.FFmpeg安装 安装依赖包: yum install libtheora-devel libvorbis-devel 1 FFmpeg编译安装: 由于系 ...
- SQL SERVER linked server Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
昨天创建了一个View, 这个view是一系列的表达式(CTE)组成,封装了好多的业务逻辑,简化下语句如下 ;with CTE AS( ...) SELECT a.company_id ,b.comp ...
- Linux虚拟机无法通过宿主机上网
解决方法 1.Windows: 确保相关服务已经启动 2.Linux: 确保相关服务已经启动 1) 确认Linux的IP地址和Windows在同一个网段: 若Windows给虚拟机分配的IP地址如下: ...
- Cloudera Manager卸载笔记
1.通过管理平台分别停止组件服务和Cloudera Management Service 2.通过管理平台注销并移除Parcles (在控制台注销并移除,无论是安装的Parcles还是未安装的Parc ...
- Kudu版本升级(官网推荐的步骤)(Upgrade from a Previous Version of Kudu)
不多说,直接上干货! http://kudu.apache.org/docs/installation.html#sles_from_source
- CBoard数据分析实战
介绍 CBoard由上海楚果信息技术有限公司主导开源, 它不仅仅是一款自助BI数据分析产品, 还是开放的BI产品开发平台: 用户只需简单妥妥拽拽就能自助完成数据多维分析与报表设计 开发者能够简单扩展连 ...
- RSA算法、SSL协议学习笔记
最近学习计算机网络,涉及到SSL协议,我想起了去年密码学课程讲过的非对称加密RSA算法,结合阮老师的博客,写写学习笔记,这里再回忆一下. RSA算法 RSA算法是一种非对称密码算法,所谓非对称,就是指 ...
- pat1040. Longest Symmetric String (25)
1040. Longest Symmetric String (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, ...
- Emacs学习笔记2
emacs的启动初始化 需要有一个~/.emacs文件, 这个和vim一样 emacs中的查找与替换 递增查找 C-s, 在minibuffer中输入即可, 在一次C-s会跳转到下一个 两次C-g取消 ...
- 记一次无法登录 wine QQ
入Linux坑第X天,过了五一小长假,回来布置我的环境,本来不应该装一些不必要的东西分自己心,但还是装上,以便不时之需. 把输入法装好后,就安装了QQ,查过资料,都说wine_QQ国际版可以使用,于是 ...