导读:什么是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. 用matplotlib画简单折线图示例

    例1 import numpy as np import matplotlib.pyplot as plt from scipy import stats rx1 = np.array([54.52, ...

  2. jquery文件表单上传

    1. 引入jquery文件  <script src="js/jquery-2.1.1.min.js"></script> 2. 创建form表单,如下: ...

  3. 盘点JMeter不为人知那一些细节

    Jmeter工作原理 向服务器提交请求,并从服务器取回请求返回的结果.即建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果. 文章内容以Jm ...

  4. Interllij Idea 环境必要配置

    必要设置:https://blog.csdn.net/weixin_43378248/article/details/84673406 1. @Autowired 取消错误提示 (1)选择file - ...

  5. Go Pentester - HTTP CLIENTS(1)

    Building HTTP Clients that interact with a variety of security tools and resources. Basic Preparatio ...

  6. IntelliJ IDEA:文件的路径本该是”\“,却变成了”¥“

    修改字体导致的, 有些字体中是用¥替换掉\的,所以,修改到合适的字体就好了

  7. stm32-HAL库串口收发

    串口发送 重写fputc函数 /* 优点 直接使用printf函数,发送数据长度无限制,不需要额外的数组空间 缺点 只能对应一个串口,暂时没想到解决方案 */ //头文件中要包含 stdio.h 然后 ...

  8. chrome浏览器hover时文字抖动bug

    今天发现一个奇怪的bug,chrome浏览器里面  当父标签定位为fixed时,hover里面子标签时,文本会发生抖动,百思不得其解,经过多方查证,发现解决办法 -webkit-transform:  ...

  9. DQL_MySQL

    4.DQL(查询数据){SUPER 重点} 4.1DQL (Data Query Language : 数据查询语言) -所有的查询操作: Select 数据库中最核心的语言  create data ...

  10. shell 格式化数据,转换为execl

    awk '  BEGIN { OFS="\t"} ;{ $1=$1 ; print $8,$NF} ' >/root/log/aa.xlsx awk '  BEGIN { O ...