一篇文章快速搞懂什么是GitHub

导读:什么是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的更多相关文章
- 一篇文章快速搞懂Qt文件读写操作
导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便.QFileInfo可以用来获取文件的信息.QDir可以用于对文件夹进行操作. ...
- 一篇文章快速搞懂Redis的慢查询分析
什么是慢查询? 慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程: 发送命令 命令排队 命令执行 返回结果 在慢查询的定义中,统计比较慢的时间段指的 ...
- 一篇文章快速搞懂 Atomic(原子整数/CAS/ABA/原子引用/原子数组/LongAdder)
前言 相信大部分开发人员,或多或少都看过或写过并发编程的代码.并发关键字除了Synchronized,还有另一大分支Atomic.如果大家没听过没用过先看基础篇,如果听过用过,请滑至底部看进阶篇,深入 ...
- 一篇文章快速搞懂 Apache SkyWalking 的 OAL
OAL简介 在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据. OAL ...
- 一篇文章彻底搞懂base64编码原理
开始 在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇文章带领大家了解一下Base64的底层实现. base64是什么东东呢? Base64 ...
- 一篇文章彻底搞懂es6 Promise
前言 Promise,用于解决回调地狱带来的问题,将异步操作以同步的操作编程表达出来,避免了层层嵌套的回调函数. 既然是用来解决回调地狱的问题,那首先来看下什么是回调地狱 var sayhello = ...
- 一篇文章彻底搞懂snowflake算法及百度美团的最佳实践
写在前面的话 一提到分布式ID自动生成方案,大家肯定都非常熟悉,并且立即能说出自家拿手的几种方案,确实,ID作为系统数据的重要标识,重要性不言而喻,而各种方案也是历经多代优化,请允许我用这个视角对分布 ...
- 一篇文章彻底搞懂异步,同步,setTimeout,Promise,async
之前翻看别的大佬的博客看到了关于setTimeout,promise还有async执行顺序的文章.观看了几篇之后还是没有怎么看懂,于是自己开始分析代码,并整理了此文章,我相信通过此文章朋友们能对异步同 ...
- 一篇文章彻底搞懂Java的大Class到底是什么
作者在之前工作中,面试过很多求职者,发现有很多面试者对Java的 Class 搞不明白,理解的不到位,一知半解,一到用的时候,就不太会用. 因为自己本身以前刚学安卓的时候,甚至做安卓2,3年后,也是对 ...
随机推荐
- 前端06 /JavaScript之BOM、DOM
前端06 /JavaScript 目录 前端06 /JavaScript 昨日内容回顾 js的引入 js的编程要求 变量 输入输出 基础数据类型 number string boolean null ...
- hihoCoder 1041 国庆出游 最详细的解题报告
题目来源:国庆出游 解题思路(下面是大神的写的): 把题目中的序列称作S,树称作T.那么对于S中的任意节点x,x的子孙节点如果在S出现的话,那么这个子孙节点的位置是有一定要求的:x的所有子孙节点在S中 ...
- 基于animate.css动画库的全屏滚动小插件,适用于vue.js(移动端、pc)项目
功能简介 基于animate.css动画库的全屏滚动,适用于vue.js(移动端.pc)项目. 安装 npm install vue-animate-fullpage --save 使用 main.j ...
- Ubuntu14.04 安装VMware tools
Ubuntu14.04 安装VMware tools 方法一: 1. 在VMware 11(个人的测试环境为vm 11版本)下安装Ubuntu镜像:ubuntu-14.04.1-desktop-amd ...
- 用前端姿势玩docker【一】Docker通俗理解常用功能汇总与操作埋坑
前言 首先一句话表达个人对docker的理解:与传统虚拟技术基于硬件及物理资源的虚拟化相比,Docker更加轻量化,docker为基于操作系统或内核级别的虚拟化,并且提供了从各种机制与操作以满足从开发 ...
- 趣学Python编程PDF高清完整版免费下载|百度网盘
百度网盘:趣学Python编程PDF高清完整版免费下载 提取码:ts47 内容简介 python是一款解释型.面向对象.动态数据类型的高级程序设计语言.python语法简捷而清晰,具有丰富和强大的类库 ...
- MyBatis动态插入的实现
mybatis通过定义前缀后缀和分割字符来拼接sql语句,实现动态插入的功能 <insert id="addNewsTypeByNewsId"> insert into ...
- 《谁说菜鸟不会数据分析》高清PDF全彩版|百度网盘免费下载|Python数据分析
<谁说菜鸟不会数据分析>高清PDF全彩版|百度网盘免费下载|Python数据分析 提取码:p7uo 内容简介 <谁说菜鸟不会数据分析(全彩)>内容简介:很多人看到数据分析就望而 ...
- flask的第一次尝试
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return "Hello ...
- Pandas 复习2
import pandas as pd import numpy as np food_info = pd.read_csv('food_info.csv') 1.处理缺失值(可使用平均数,众数填充) ...