导读:什么是GitHub?Git与GitHub之间是什么关系?我们为什么需要版本控制系统?GitHub如何使用?本文将带你一探究竟。

本文字数:1710,阅读时长大约:13分钟

一、什么是版本控制

按照百度百科的说法:“版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。”

这里的核心词是对“文件变更的管理”,其实不管是写代码还是写文档,当文件发生变更时都会有两个绕不开的问题:一个是文件版本的管理,另一个是团队如何协作。

比如当你在做一份报告时,每一次比较大的改动可能都会做一个副本,以备后面有改回来的需要。每一个副本文件名都加一些不同的后缀,比如数字、字母、日期等等。不过可能时间一长,你自己也不记得每个副本都做过的哪些修改,甚至找不到最后一个版本是哪份文件了。又比如当一个团队需要去修改一份数据文件,小明、小红、小刚等人都在同时修改,每个人的修改是否都能被包含在数据文件里,最终的文件以哪一份为准?在这些场景中,我们都需要一个文件版本控制系统来帮助我们解决文件的版本问题以及团队协作的问题。

版本控制系统可以帮助我们记录文件的变更,包括在什么时间、被什么人、修改了哪些内容。这样我们就不用在自己的电脑里保存那么多份文件副本了,只需要将每一次的修改提交到版本控制系统中去。如果未来需要文件回溯,可以直接在系统中选择历史版本,非常简单方便。另外在软件开发中往往是一个团队共同进行,版本控制系统可以支持并行开发,能够通过分支、合并等方式有效地解决修改冲突。

版本控制系统有很多,除了我们今天要介绍的 Git,比较常用的还有 Subversion, CVS,和 Mercurial。

二、什么是 Git

Git,最初是由 Linux之父 Linus Torvalds在2005年开发出来的一款开源的版本控制系统。和其他版本控制系统一样,它最核心的一个概念就是仓库(repository)。仓库其实就是在电脑中开启了Git记录的一个文件夹/目录。仓库中可以包含多个文件以及子文件夹。Git中的仓库是存储在本地电脑上的,不像其他的版本控制系统(比如Subversion)将仓库存储在服务器当中。这就意味着Git允许你在电脑不联网的情况下也可以正常工作,你可以修改文件、提交、查看修改历史、分支、合并等等。

Git最初只有命令行,后来也开发出了桌面版GUI的程序,不过桌面版GUI功能有限,想要使用最完整的功能,还是建议使用命令行。

三、什么是 GitHub

Git虽然是一个很好的版本管理系统,但是只通过命令行的方式来使用还是有一些不方便。于是在2008年,开源社区开发了一个叫GitHub的网站。它可以存储所有的Git仓库,并且提升了开发者们之间的协作体验。GitHub迅速成为了开源社区的宠儿,大量开源项目纷纷落户,使用它来做版本控制以及沟通协作。现在有成千上万的公司也加入了进来,使用GitHub作为公司内部的版本控制系统。

时至今日,GitHub已经不再单单是一个版本管理的网站,它更像是一个开源社区的社交工具。很多开发者们都会在上面去逛,看看有哪些好玩的、自己感兴趣的项目。我们也可以看到其他开发者们参与过哪些项目,每个人都好像有一张自己的名片。当你想要参与到某个项目中去时,项目管理者也可以根据你的记录来选择是否接受。

四、Git的安装与使用

了解了Git与GitHub的原理之后,我们来看一下如何使用GitHub创建一个新的或者使用一个项目。

(1)打开GitHub的网站www.github.com

如果还没有账户,可以按照提示注册一下。

(2)创建一个新的仓库

点击创建仓库(Create repository)按钮

填写仓库(项目)名称,设置成公共/私有仓库,同时可以初始化一个README文件。

创建成功

(3)在本地电脑安装Git

以 CentOS为例,使用 yum install -y git 命令安装;其他操作系统可以参考Git官方网站的安装手册

https://git-scm.com/downloads

安装好后不要忘了配置 Git账号

(4)将GitHub的仓库复制到本地

点击Code按钮,将仓库的URL复制下来。

使用 git clone + url 的命令将仓库复制到本地

(5)在本地添加一个新文件

进入github-test文件夹,添加一个hello.c的文件。

使用 git status 命令查看当前状态,系统提示有一个未跟踪的文件hello.c,建议使用git add命令来包含要提交的内容

使用 git add 命令添加要提交的文件

使用 git commit -m "comments" 来提交修改;注意,这里的提交只是提交到了本地的 Git仓库,如果想同步到 GitHub还需要使用到 git push命令

使用 git push 命令将修改同步到 GitHub

回到GitHub,可以看到新的文件被添加进来

获取知识干货、增加面试经验、了解职场人生

欢迎关注微信公众号

一篇文章快速搞懂什么是GitHub的更多相关文章

  1. 一篇文章快速搞懂Qt文件读写操作

    导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便.QFileInfo可以用来获取文件的信息.QDir可以用于对文件夹进行操作. ...

  2. 一篇文章快速搞懂Redis的慢查询分析

    什么是慢查询? 慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程: 发送命令 命令排队 命令执行 返回结果 在慢查询的定义中,统计比较慢的时间段指的 ...

  3. 一篇文章快速搞懂 Atomic(原子整数/CAS/ABA/原子引用/原子数组/LongAdder)

    前言 相信大部分开发人员,或多或少都看过或写过并发编程的代码.并发关键字除了Synchronized,还有另一大分支Atomic.如果大家没听过没用过先看基础篇,如果听过用过,请滑至底部看进阶篇,深入 ...

  4. 一篇文章快速搞懂 Apache SkyWalking 的 OAL

    OAL简介 在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据. OAL ...

  5. 一篇文章彻底搞懂base64编码原理

    开始 在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇文章带领大家了解一下Base64的底层实现. base64是什么东东呢? Base64 ...

  6. 一篇文章彻底搞懂es6 Promise

    前言 Promise,用于解决回调地狱带来的问题,将异步操作以同步的操作编程表达出来,避免了层层嵌套的回调函数. 既然是用来解决回调地狱的问题,那首先来看下什么是回调地狱 var sayhello = ...

  7. 一篇文章彻底搞懂snowflake算法及百度美团的最佳实践

    写在前面的话 一提到分布式ID自动生成方案,大家肯定都非常熟悉,并且立即能说出自家拿手的几种方案,确实,ID作为系统数据的重要标识,重要性不言而喻,而各种方案也是历经多代优化,请允许我用这个视角对分布 ...

  8. 一篇文章彻底搞懂异步,同步,setTimeout,Promise,async

    之前翻看别的大佬的博客看到了关于setTimeout,promise还有async执行顺序的文章.观看了几篇之后还是没有怎么看懂,于是自己开始分析代码,并整理了此文章,我相信通过此文章朋友们能对异步同 ...

  9. 一篇文章彻底搞懂Java的大Class到底是什么

    作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用. 因为自己本身以前刚学安卓的时候,甚至做安卓2,3年后,也是对 ...

随机推荐

  1. 公众号迁移 原有数据库openid 更新主体openid

    今天一个两年前做的公众号项目 要更改主体,随之而来的是公众号的迁移. 公众号迁移后关注的粉丝也会对应的进行迁移,还会给粉丝发送相关通知. 大体流程如下图 迁移的具体步骤我就不细说了.今天主要说的是 迁 ...

  2. DQL:查询表中的记录

    DQL:查询表中的记录 * select * from 表名; 1. 语法: select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 ...

  3. 集训 T2-监考老师

    大致题意: 找出一个位置可以选出最大的"横排总和+竖列总和". 基本思路 利用前缀和的思想在读入的时候把每一列每一行的总和都算出来, 然后暴力枚举每一个点,每一个点的答案就是这一行 ...

  4. layui 魔改:富文本编辑器添加上传视频功能

    甲方又整新需求了:富文本编辑器需要可以传视频. layui本身的富文本编辑器没有传视频的功能,所以,又到了咱们魔改的时候了. 友情提醒,富文本编辑器 layedit 只有layui的V1版有,V2版没 ...

  5. 通过cmd进入指定D盘下的某个文件夹

    有时候我们在使用电脑的时候,想使用cmd命令提示符,进入d盘,怎么操作呢,下面来分享一下方法 案例描述:如果进入D盘下的test文件夹(D:\test) 1.win10系统环境下,点击搜索输入[cmd ...

  6. PyQt5模型视图委托

    Model-View-Delegate 模型视图委托(MVD)是PyQt中特有的设计模式,类似MVC设计模式,将MVC设计模式中的Controller当做MVD中的Delegate,两者的概念基本相同 ...

  7. Module not found: Error: Can't resolve './style':配置 extensions 的坑

    ERROR in ./src/index.js Module not found: Error: Can't resolve './style' in 'D:\gitcode\github\learn ...

  8. jmeter压力测试报错:java.net.BindException: Address already in use: connect || java.net.SocketException: Socket closed

    windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错. 解决办法(在jmeter所在服务器操作): ...

  9. java大数据最全课程学习笔记(6)--MapReduce精通(二)--MapReduce框架原理

    目前CSDN,博客园,简书同步发表中,更多精彩欢迎访问我的gitee pages 目录 MapReduce精通(二) MapReduce框架原理 MapReduce工作流程 InputFormat数据 ...

  10. Java 并发队列 BlockingQueue

    BlockingQueue 开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现. 首先,最基本的来说, BlockingQueue 是一个先进先出的队列(Queue),为什么说是 ...