Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。
实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交 推送 到服务器仓库里,也从服务器仓库中 拉取 别人的提交。
可以自己建一个git服务器,也可以先直接使用GitHub。
由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:
第1步 :创建SSH Key。
在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了, 个人建议删除掉 。
$ ssh-keygen -t rsa - C "youremail@elesos.com"
一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到 .ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件,这两个就是SSH Key的秘钥对, id_rsa 是私钥 ,不能泄露出去, id_rsa.pub 是公钥,可以放心地告诉任何人。
第2步 :登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上 任意Title ,在Key文本框里粘贴 id_rsa.pub 文件的内容:
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以, 不要把敏感信息放进去 。
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手, 搭一个Git服务器 ,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。
添加完成之后是这样的
然后回到终端输入指令:ssh -T  git@github.com  执行完这条指令之后会输出 Are you sure you want to continue connecting (yes/no)? 输入 yes 回车
回到github,刷新网页就可以看到钥匙旁的灰色小圆点变绿,就表明已经添加成功了。
-T      Disable pseudo-tty allocation. 禁止分配伪终端,当用ssh或telnet等登录系统时,系统分配给我们的终端就是伪终端。
https://help.github.com/articles/testing-your-ssh-connection/
添加文件后,先commit,然后push

现在的情景是, 你已经在 本地创建了 一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步 ,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
首先,登陆GitHub ,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库test:
其他 保持默认设置 , 不要选GPL协议,不然不是空库了。 可以选择gitignore,最好是默认!!!
目前,在GitHub上的这个仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个 已有的本地仓库与之关联 ,然后,把本地仓库的内容推送到GitHub仓库。
在本地的仓库test下运行命令:
$
git remote add origin git @github . com: michaelliao/learngit.git
注意,把上面的 michaelliao 替换成你自己的GitHub账户名,如 https://github.com/elesos/test.git
否则,你在本地关联的就是我的远程库, 关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。
添加后, 远程库的名字就是 origin ,这是Git默认的叫法 ,
下一步,就可以把本地库的所有内容 推送到远程库上 :
git push -u origin master
实际上是把当前分支 master 推送到远程。
由于远程库是空的,我们 第一次 推送 master 分支时,加上了 -u 参数,Git不但会把本地的 master 分支内容推送的远程 新的 master 分支,还会把本地的 master 分支和远程的 master 分支 关联起来 ,在以后的推送或者拉取时就可以 简化命令 。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
从现在起,只要本地作了提交add和commit之后,就可以通过命令:
3.$ git push origin master
把本地 master 分支的最新修改推送至GitHub
分布式版本系统的最大好处之一是在本地工作完全 不需要考虑远程库的存在 ,也就是有没有联网都可以正常工作, 而SVN在没有联网的时候是拒绝干活的! 当有网络的时候,再把本地提交推送一下就完成了同步 !
2,从远程库克隆
上面 我们讲了先有本地库,后有远程库的时候,如何关联远程库。
现在, 假设我们从零开发,那么 最好的方式 是先创建远程库,然后,从远程库克隆。
1,登陆GitHub,创建一个新的仓库,名字叫 gitskills
我们勾选 Initialize this repository with a README ,这样GitHub会自动为我们创建一个 README.md 文件。 gitignore 也可以选择。创建完毕后,可以看到 README.md 文件:
现在,远程库已经准备好了, 下一步是用命令 git clone 克隆一个本地库:
git clone git @github . com: michaelliao/gitskills.git
 git clone  git@github.com :elesos/FFmpeg_Demos
还可以用 https://github.com/michaelliao/gitskills.git 这样的地址。实际上,Git支持多种协议,默认的 git:// 使用ssh,但也可以使用 https 等其他协议。
使用 https 除了 速度慢以外,还有个最大的麻烦是每次推送都必须输入口令 ,但是在某些只开放http端口的公司内部就无法使用 ssh 协议而只能用 https 。
使用GitHub
如何参与一个开源项目呢?
点“Fork”就在自己的账号下克隆了一个bootstrap仓库,然后, 从自己的账号下 clone:
git clone git @github . com: michaelliao/bootstrap.git
一定要从自己的账号下clone仓库 ,这样你才能推送修改。如果从bootstrap的作者的仓库地址 git@github.com:twbs/bootstrap.git 克隆,因 为没有权限,你将不能推送修改
如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后, 往自己的仓库推送 。
如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个 pull request 。当然,对方是否接受你的pull request就不一定了。
git push origin master后,可以在github网上自己的fork库处 pull request

转载于:https://www.cnblogs.com/elesos/p/7151459.html

史上最浅显易懂的Git教程2 github相关推荐

  1. 转载:廖雪峰经典:史上最浅显易懂的Git教程!

    从零起步的Git教程,让你无痛苦上手世界上最流行的分布式版本控制系统Git! 既然号称史上最浅显易懂的Git教程,那这个教程有什么让你怦然心动的特点呢? 首先,本教程绝对面向初学者,没有接触过版本控制 ...

  2. 史上最简单的git教程搭配Github和Gitee一起食用更佳

    史上最简单的git教程 开始之前 git的最简单使用 1. 安装 2. 配置 2.1 用户信息 3. 最基本使用 Github 1. 首先你需要一个账号 2. 你需要一个仓库 Gitee 开始之前 g ...

  3. 史上最浅显易懂的Git教程!

    Git初学者很好的一篇教程 mark : ) http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c01 ...

  4. 史上最简单的git教程|第九篇:分支管理工具

    在上一篇我们讲到了如何创建合并分支.如何解决冲突以及如何删除分支,那么接下来我们将讲到一些常用的分支管理工具. 获取所有分支列表: $ git branch * b1master 可以看书一共有两个分 ...

  5. 史上最经典的git教程

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wsyht90.blog.51cto.com/9014030/1832284 文档 ...

  6. 史上最浅显易懂的Git学习指南

    Git是最流行的版本控制系统,且是分布式的,不像SVN的集中式管理.今天在网上搜了下Git,找到了一个很好的Git学习指南,竟然一口气把它全部刷了一遍,算是简单入门了.教程写的很好,浅显易懂,配有实例 ...

  7. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)

    转:https://blog.csdn.net/forezp/article/details/70037291 最新版本: 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spr ...

  8. 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)

    转:https://blog.csdn.net/forezp/article/details/69939114 最新版本: 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)( ...

  9. 史上最简单的 SpringCloud 教程

    关注公众号"风色年代"订阅更多精彩文章,本博大部分文章为转载并已标明原文出处,如有再转敬请保留,请自觉尊重原创作者的劳动成果! https://blog.csdn.net/fore ...

最新文章

  1. 七天学会「股票数据分析软件」的开发(下)
  2. 二维树状数组 ----2021广东省赛 ----- K - Kera‘s line segment[区间转二维平面+树状数组维护前缀最小最大值]
  3. Android中Webview使用javascript调用事先定义好的Java函数
  4. Asp.Net Core Ocelot Consul 微服务
  5. 手机浏览器html5游戏,移动浏览器都爱 HTML5 ?
  6. matlab创建数组对象,MATLAB一维数组(向量)的定义
  7. CSSS - CSS幻灯片
  8. 游戏制作大致流程粗谈之五
  9. 三路快排C++实现与应用
  10. Dennis Ritchie, father of Unix and C, dies
  11. linux下实用工具,Linux下的实用工具(持续更新)
  12. PHP云和骑士人才优缺点,PHP云人才系统与骑士cms人才系统对比点评
  13. 我对于微信文章的感悟
  14. git 操作报错(fatal: ‘xxx’ does not appear to be a git repository)
  15. 【ZOJ2750】Idiomatic Phrases Game(最短路)
  16. 最常访问的几个技术网站
  17. Java程序员学习Rust编程
  18. string转换long
  19. python学习笔记8
  20. Mac OS开发者软件清单

热门文章

  1. 微信小程序分享页面标题出现乱码
  2. Idea Java 快捷键整理
  3. pycharm配置镜像源
  4. 常用的python面试题简单接触
  5. jswatermark 轻量简单js 图文水印
  6. Docker 容器下载 及 基本操作指令
  7. 某二次元游戏的单机玩法
  8. SAP XI 常用事务代码
  9. C语言中内存申请函数
  10. Vscode底部状态栏消失