Git 与 GitHub 的来历

Linux 之父 Linus 在 1991 年创建开源的 Linux 操作系统之后,多年来依靠全世界广大热心志愿者的共同建设,经过长足发展,现已成为世界上最大的服务器系统。系统创建之初,代码贡献者将源码文件发送给 Linus,由其手动合并。这种方式维持多年后,代码量已经庞大到人工合并难以为继,于是深恶集中式版本控制系统的 Linus 选择了一个分布式商业版本控制系统 BitKeeper,不过 Linux 社区的建设者们可以免费使用它。BitKeeper 改变了 Linus 对版本控制的认识,同时 Linus 发现 BitKeeper 有一些不足,而且有个关键性的问题使之不能被广泛使用,就是不开源。

在 2005 年,BitKeeper 所在公司发现 Linux 社区有人企图破解它,BitKeeper 决定收回 Linux 社区的免费使用权。Linus 对此事调节数周无果,找遍了当时已知的各种版本控制系统,没有一个看上眼的,一怒之下决定自己搞一个。Linus 花了十天时间用 C 语言写好了一个开源的版本控制系统,就是著名的 Git。

2007 年旧金山三个年轻人觉得 Git 是个好东西,就搞了一个公司名字叫 GitHub,第二年上线了使用 Ruby 编写的同名网站 GitHub,这是一个基于 Git 的免费代码托管网站(有付费服务)。十年间,该网站迅速蹿红,击败了实力雄厚的 Google Code,成为全世界最受欢迎的代码托管网站。2018 年 6 月,GitHub 被财大气粗的 Microsoft 收购。2019 年 1 月 GitHub 宣布用户可以免费创建私有仓库。根据 2018 年 10 月的 GitHub 年度报告显示,目前有 3100 万开发者创建了 9600 万个项目仓库,有 210 万企业入驻。

在 GitHub 上创建仓库

首先,打开 GitHub 注册个人账户并登录。登录后,在个人主页的右上角点击 New repository 创建新的仓库:

打开页面如下图所示,填入相关信息。注意下图紫色框中有两个下拉按钮,左边的用来选择忽略文件,右边的用来选择所属协议,这两项可以不选,后面会讲到。

点击绿色按钮创建新的仓库,成功后自动跳转到新建仓库的主页面,如下图所示:

安装 Git

接下来,尝试使用这个仓库。

首先到 Git 官网下载客户端,Windows 用户默认下一步进行安装,安装好之后,开始菜单里会有一个 Git Bash,点击打开

打开后类似于一个命令行窗口,使用 git --version 命令可以查看安装的版本信息。

克隆 GitHub 上的仓库到本地

现在克隆前面在 GitHub 上创建的仓库,使用 git clone + [仓库地址] 命令即可,这是标准的克隆仓库命令。

点击下图绿色按钮,再点击紫色框中的按钮即可复制仓库地址。

克隆仓库到本地:

进入仓库主目录,如下图所示,仓库主目录中有个 .git 隐藏目录,它里面包含了仓库的全部信息,删掉这个目录,仓库就变成普通的目录了。进入到仓库目录中,命令行发生了一些变化,出现了蓝青色的 master ,它就是当前所在的分支名:

当我们在 GitHub 上创建一个仓库时,同时生成了仓库的默认主机名 origin,并创建了默认分支 master。GitHub 可以看成是免费的 Git 服务器,在 GitHub 上创建仓库,会自动生成一个仓库地址,主机就是指代这个仓库,主机名就等于这个仓库地址。克隆一个 GitHub 仓库(也叫远程仓库)到本地,本地仓库则会自动关联到这个远程仓库,执行 git remote -v 命令可以查看本地仓库所关联的远程仓库信息:

Git 要求对本地仓库关联的每个远程主机都必须指定一个主机名(默认为 origin),用于本地仓库识别自己关联的主机,git remote 命令就用于管理本地仓库所关联的主机,一个本地仓库可以关联任意多个主机(即远程仓库)。

克隆远程仓库到本地时,还可以使用 -o 选项修改主机名,在地址后面加上一个字段作为本地仓库的主目录名,举例如下:

另一个在其它 Git 教程中常见的命令 git init ,它会把当前所在目录变成一个本地仓库,因为有 GitHub 的存在,这个命令在我们的生产生活中用到的次数很少。操作截图如下:

Git 与 GitHub 简介的更多相关文章

  1. git 和github简介

    关于github不清楚的可以百度, 在这里,可以创建一个新的仓库 点击Create repository后会出现下面这些信息,其中第一块是仓库的url链接 第二块是你在本地目录中创建一个READEME ...

  2. Git和Github的介绍、简单操作、冲突(上)

    目的:   1.git与github简介  2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe   5.Git常用命令 5.1Git命令使用场景 5. ...

  3. git和github入门指南(1)

    1.git和github简介 1.1.git是什么?github是什么?git和github的关系? Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. Git ...

  4. git与github区别与简介

    From: https://blog.csdn.net/skyxmstar/article/details/65631658 git和github是两个完全不同的概念. git 是一个版本管理工具,是 ...

  5. Git(1) - Git、Github和Gitlab简介

    Git是什么 概念 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. SVN.CVS等,它们是集中式版本控制系统. 集中式和分布式版本控制 ...

  6. 【风马一族_git_github】git与github的英文记录

    Pull requests  Issues Gist 请求 问题 要点 ---------------------------------------------------------------- ...

  7. 知识扩展——Git和GitHub的区别

    一直以为Git和GitHub是一个东西,直到我看到这个解释.... 转载自:git与github区别与简介 一开始接触git或是github的程序员可能搞不太清楚这些名词到底指代的是什么,所以在这里稍 ...

  8. [git与github]__git与github简单了解

    前言 关于版本控制,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 我们通过版本控制系统可以解决的问题:可以非常方便的查看我们的源码文件的历代更新版本.或将我们的项目源 ...

  9. 本地Git与GitHub服务器建立连接(SSH方式通信)

    简介 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要 ...

随机推荐

  1. /etc/inittab文件详解

    /etc/inittab由/sbin/init程序解析调用,用于系统初始化,/sbin/init可参考源码busybox中init.c的实现方式. 原址如下: http://leejia.blog.5 ...

  2. ACM练习中关于LCS的题目

    You are planning to take some rest and to go out on vacation, but you really don’t know which cities ...

  3. 简单的linux使用命令

    1 查看日志异常 tail -f 实时查看日志文件 tail -f 日志文件logtail - 100f 实时查看日志文件 后一百行tail -f -n 100 catalina.out linux查 ...

  4. ADB——管理应用

    ADB应用管理 主要操作有查看应用列表.安装应用.卸载应用.清楚应用数据与缓存.查看前台Activity.查看应用信息及安装路径等等 查看应用列表 查看应用列表的基本命令格式是 adb shell p ...

  5. Python3学习之路~7.5 异常处理

    1.异常基础 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页!!! try: pass except Excepti ...

  6. 常用邮箱POP3 STMP服务器与端口号设置

    一.常用邮箱POP3 STMP服务器与端口号设置: [网易 163.126免费邮箱目前不直接开放smtp.pop3服务.有需要的用户可通过购买随身邮或邮箱伴侣及加入会员中心获得.从2006年11月16 ...

  7. C#路径中获取文件全路径、目录、扩展名、文件名称

    C#路径中获取文件全路径.目录.扩展名.文件名称常用函数 需要引用System.IO 直接可以调用Path的静态方法 class Program { static void Main(string[] ...

  8. B. Lynyrd Skynyrd

    传送门: 题意:给出 n,m,q 然后给出模板串,从1-n数字只出现一次,然后给出长度为m的要询问的串. q组询问:每组询问输出 ‘1’或者‘0’ 每组询问 一对x,y    问在x到y中有没有模板串 ...

  9. JDBCUtils相关

    1.之所以使用类加载器InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbcInfo.prop ...

  10. 551.学生出勤记录I

    /* * @lc app=leetcode.cn id=551 lang=java * * [551] 学生出勤记录 I * * https://leetcode-cn.com/problems/st ...