GitHub 入门教程—— Git的常识与快速上手

前言:
或许你在看到这篇文章以前,你对Git和GitHub两者的概念还很模糊,或许你曾以为它们倆就是同一个东西,其实不然,其实两者完全是两个截然不同的东西,我们要迈进GitHub的大门就必须先跨过Git这一座大山,它们二者笔者在这里大胆的做个比喻吧Git就好比卡车,而GitHub就是一个仓库,Git的身份就是充当各个仓库之间的运输工具.当然这样的比喻也不是很恰当,作者的文采也很有限.不过相信你看了下文的讲解与应用你应该很快能明白Git和GitHub到底是个什么东西,这里就不卖关子了,下面就进入今天的主题吧;

一. Git的诞生背景

  • Git是由Linux系统的创始 Linus Torvalds 人于2005年编写的,当时呢还只是一个雏形并不能真正意义上的称作Git,由于在 Linux 内核开发中使用的既有版本管理系统的开发方许可证发生了变更,为了更换新的版本管理系统,后面Linus 才在前面的基础上开发了 Git。众所周知Linux 内核的更新速度在全世界也算首屈一指,因此,势必需要一个功能强、性能高的版本管理系统来提高开发速度。在当时的开源环境下,虽然已经有数款版本管理软件被开发出来,但功能和性能都差强人意。加之 Git 是由 Linus Torvalds 亲自着手开发的,可以说在功能与性能方面无可挑剔。程序员们愿意接受 Git 很大程度上取决于这个背景才得益于发扬光大。

  • 其实市面上有很多的版本控制工具,如 CSV (Concurrent Version System),SVN (Subversion)等等.

  • 那为什么要有Git的出现呢,它和其他版本控制工具又有何不同.下面就一一道来

    (1) 首先Git和SVN,CSV最大的不同点就是:Git的是分布式的,而后两个就是不是,这是最本质的区别

    (2) Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏

    (3) Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录,而在Git中分支对用户来时几乎是无感知,你完全就感觉两个分支之间没有任何的联系,好像就是两个不同的环境,有点类似于现在手机上的那种手机分身的效果

    note: 其实不同点还有很多这里就不全部列举了

  • 前面在讲 Git 和其他版本控制工具的不同点时我们提到了一个关键词(分布式),这个词随着现在大数据的发展,无不是随处可见.那么分布式的版本控制工具与平常的集中式版本控制工具有何不同,谁更好呢?

  • 其实吧,这个笔者可以肯定的说,这两种不同架构的版本控制工具没有好坏之分,用谁完全取决于你的工作需求,

  • 先来看看集中型版本控制工具的架构模型:

在这里插入图片描述根据上图可以看到,将仓库集中存放在服务器之中,所以只存在一个仓库。这就是为什么这种版本管理系统会被称作集中型。集中型将所有数据集中存放在服务器当中,有便于管理的优点。缺点就是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就几乎无法进行。服务器宕机时也是同样的道理,而且万一服务器故障导致数据消失,恐怕开发者就再也见不到最新的源代码了。

  • 再来讲讲分布式版本控制工具的架构模型
    在这里插入图片描述
    可以在图中看到GitHub就相当于是一个公共的桥梁,我们通过这个桥梁还有Git工具就能实现随时随地的和其他的开发者进行代码交流,GitHub 为用户提供云端存储仓库,并可以把仓库 Fork 给了每一个用户(注意是要公开或者授权的)。Fork 就是将 GitHub 的某个特定仓库复制到自己的账户下。Fork 出的仓库与原仓库是两个不同的仓库,开发者可以自行在自己的仓库上进行编辑(到此前面提到的仓库都还是在服务器端进行存储的),实际开发中我们一般都是会将自己在GitHub上的仓库克隆到本地上来,然后再将本地的Git仓库的远端(上游)设置为GitHub端.分布式架构的版本控制工具拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必连接远程仓库就可以进行开发。这里只在图中列举了简单的示例,其实在互联网中错综复杂的关系下,实际的Git模型远比图中展示的复杂.

note: 在前面的解释中已经提到了很多Git的模型概念,或许你还是没有听出个什么所以然来,不妨再看看下面的运用来加深理解.

二. 初始化设置

  • 安装
    Linux 系统上安装非常简单只需一条命令即可:

    # Debian 发行版(Ubuntu,Kali ..):
    sudo apt install -y git
    # Red Hat 发行版(CentOS):
    sudo yum install -y git
    

    Windows 上呢因为命令行采用的是Dos命令进行交互,所以需要到官网去下载Windows的版本
    Git for Windows
    这里因为篇幅原因就不多提了,因为也不是本文的重点,读者可以自行谷歌或者百度参考相关的安装教程.
    如果你是一个初学者,您还可以尝试使用图形化界面的Git进行操作

    MacOs 用户可以使用homebrew 进行安装

    brew install git
    
  • 配置
    安装完成后我们还需要对Git进行一下配置,毕竟这样我们用着才衬手嘛.
    (1) 设置你的名字,作为一个优秀的开发者,别人见识到你的代码后对你比较感兴趣,总得让别人记住你吧,所以为自己设置一个名 字很重要,也是区分提交代码时的身份记录.

    git config --global user.name "firstname lastname"
    

    (2) 光有名字还不行.在无边无界的互联网当中,有又能保证没有一个和你重名的他呢,所以我们需要一个能够唯一表示你的身份认证,于是就设置邮箱即可,还可以方便别人联系到你.

    git config --global user.email "yourname@email.com"
    

    (3) 代码本就是枯燥无味的,何不来点颜色装饰一下这个灰色的世界呢,设置一下高亮是一个不错的选择.

    git config --global color.ui auto
    

    (4) 这几行代码都干了什么,不妨回到你的 HOME 目录下来看看.

    cat .gitconfig
    ============================= .giticonfig ==========================
    [user]
    	name = firstname lastname
    	email = yourname@email.com
    [color]
    	ui = auto
    ================================= END ===============================
    

    在你的 HOME 目录下会多出来一个名为,gitconfig,里面的内容就是我们刚使用命令进行配置的,你也可以直接在这个文件里修改配置信息是一样的.

    note: 当然参数还远不止这几条,还有很多的参数可以配置,读者可以自行查阅官方文档进行配置

  • 初始化git工作目录
    在安装配置完成之后,我们就需要来执行一个目录来作为我们的工作目录,不妨我们在HOME目录下新建一个用来做Git测试的目录,在进入到这个目录使用Git的命令对这个目录进行初始化;

    mkdir GitTest
    
    cd GitTest
    
    git init
    

    这是你学到的第一个 git 的命令是不是简单,不妨我们来看一下这条命令究竟干了些什么?

    ls -a
    

    我们可以看到在GitTest目录下多出来一个目录名为 .git 的隐藏目录,其实这里面就是保存整个Git的工作树的.在这里面保存着,文件的元数据信息,历史版本,操作日志等等.

三. 命令实践

  • git status
    执行过后你应该能看家下图的提示
    在这里插入图片描述
    第一行表示我们正处于master分支(在 init 后git会为我们自动创建一个 master 分支即为主分支,分支的概念后面会细说)
    第二行表示我们的状态还是初始化提交的状态
    第三行行表示的是我们当前还没有需要提交的文件

    新建一个文件再来看看:
    在这里插入图片描述
    我们新建的这个文件为READEME.md 文件这个文件采用MarkDown语法,就是拿来给看你代码的人介绍你代码的用途的,你就把它当成普通文件就行,当然你也可以去学习一下MarkDown的语法,还是挺有用的,工作中也经常用得到,通过上面的图片可以看到我们在执行’git status’命令时多了一行提示,而且还是红色(一看就比较重要),它的提示是,这个文件还没有被提交,你可以尝试它给定的命令进行提交

  • git add
    我们这里就根据上面所给的提示执行命令,将新建的文件加入文件暂存区
    在这里插入图片描述
    从图中的执行过程中我们可以看到,当前已经是把我们新建的这个文件添加到了文件暂存区了,但是注意此时还没有提交.

  • git commit
    所以我们需要再将存放在暂存区的文件提交一遍
    在这里插入图片描述
    我这里使用了 ‘-m’ 的参数,它会直接将后面跟的字符串(也就是我们对这次提交的一个描述信息)写入到这次的提交日志当中,如果没有加这个参数,就进入到一个命令交互行的界面,再在里面填写相关信息即可.提交完成后我们再使用先前查看状态的命令可以发现,整个项目的状态就又恢复如初了.

  • git log
    有时我们想要查看整个项目的历史提交记录,就可以使用使用这个命令进行查看
    在这里插入图片描述
    根据上图我们可以看到心事的日志信息分为四行
    第一行表示提交的Hash编码,这个编码在本项目内是唯一的,用来表示唯一的一次操作
    第二行就是提交者的信息,姓名,邮箱
    第三行是提交的日期和时间
    第四行便是提交时填写的描述信息

  • git diff
    现在我们再来试一试往文件中添加一行内容试试
    在这里插入图片描述
    从图中可以看到我们先在文件中添加了一行内容,然后我们使用 “git diff” 命令查看文件与当前所处的状态之间的不同,可以看到输出的信息指明我们文件和分支中存放的文件内容是不一样的,当前文件与原来相比添加了一行内容.
    然后我们还是使用先前的方法把这次更改一并提交一下:
    在这里插入图片描述
    可以看到 READEME 文件当前已经和最新版本没有差异了

好了你已经掌握了Git最最最基本的命令了,当然还有更高级的操作等着你,比如分支,回溯,修改提交信息,将本地仓的数据推送到远程仓库,从远程仓库拉去,项目克隆等等,因为学知识不在乎多,而在乎是否领悟,一次性接触太多也不能马上消化,所以关于所说的更高级的操作,博主会在本专题后面的文章进行详细讲解,看到这里感谢您抽出这么宝贵的时间来看博主的博客,也感谢你的渴望知识的态度,感谢CSDN这个平台,谢谢!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值